Java基础读书笔记.docx
《Java基础读书笔记.docx》由会员分享,可在线阅读,更多相关《Java基础读书笔记.docx(21页珍藏版)》请在冰豆网上搜索。
![Java基础读书笔记.docx](https://file1.bdocx.com/fileroot1/2022-11/23/5d1af7e7-c365-4f27-80c0-e09f426a29b9/5d1af7e7-c365-4f27-80c0-e09f426a29b91.gif)
Java基础读书笔记
Java
一.Java概述
二.Java语言基础
三.面向对象编程
四.Java异常类处理机制
五.数组
六.Java常用类
七.Java容器类
八.Java流技术
九.Java多线程机制
一十.Java网络编程
一十一.GUI编程
Java概述
一.Java语言的特点
1.面向对象
2.与平台无关,提供程序运行的解释环境
3.健壮性。
吸收了C/C++的优点,但去掉了其影响健壮性的部分(如:
指针、内存的申请与释放等)。
二.Java程序运行机制及运行过程
Java两种核心机制:
Java虚拟机(JVM)、垃圾收集机制
1.Java虚拟机
1)Java虚拟机可以理解成一个以字节码为机器指令的CPU。
2)对于不同的平台运行平台有不同的虚拟机。
3)Java虚拟机机制屏蔽了底层运行平台的差别,实行了“一次编译,随处运行”。
2.垃圾收集机制
1)不再使用的内存空间应回收——垃圾收集。
2)在C/C++等语言中,由程序员负责回收无用内存。
3)Java语言消除了程序员回收无用内存空间的责任;它提供一种系统级线程跟踪存储空间的分配情况。
在JVM空闲时,检查并释放那些可被释放的存储器空间。
4)垃圾收集在Java程序运行过程中自动进行,程序员无法精确控制和干预。
三.Java开发环境的下载、安装、配置
1.下载JDK
2.安装
3.在系统属性高级标签中配置path&classpath环境变量
path:
windows系统执行命令时要搜索的路径(bin文件夹)如:
“%path%;c:
\jdk\bin”
classpath:
java在编译和运行时要找的class所在的路径如:
“.;c:
\jdk\lib”
注:
路径可以为多个(因为一台电脑可以安装多个JDK),但从第一个路径开始找。
在DOS中键入“java-version”可以看当前所用的JDK版本。
4.验证
在DOS中输入javac、java命令进行验证,出现一长串代码表示环境变量配置成功。
javac:
java编译器,编译java程序。
将java源代码文件(.java)转换成字节码文件(.class)。
java:
java解释器,运行java程序。
用来执行javac编译成的字节码。
四.JavaApplication初步
例:
简单的helloworld程序。
publicclasshelloworld
{
publicstaticvoidmain(Stringargs[])
{
//输出“helloworld”
System.out.println(“helloworld”);
}
}
此程序用DOS编译运行方法:
命令javac后面跟文件名
命令java后面跟主类(含有main方法)
主类不一定是public类
1.Java源程序以“java”为扩展名。
源文件的基本组成部分是类(class),如本例中的helloworld类。
2.一个源文件最多只能有一个public类,其他类的个数不限。
如果源文件文件包含一个public类,它必须按该类名命名。
3.Java应用程序的执行入口是main()方法。
它有固定的书写格式:
publicstaticvoidmain(Stringargs[]){……}
4.Java语言严格区分大小写。
5.Java方法有一条条语句构成,每个语句以分号结束。
6.Java语言有三种注释方式:
附:
程序员电脑的设置
1.文件夹显示方式为“详细信息”模式并“应用到所有文件夹”。
2.显示所有文件和文件夹。
3.不要隐藏文件类型。
4.在地址栏里显示完整路径(用于copy路径)。
五.常见Java开发环境
编辑器:
UltraEdit、EditPlus
集成开发环境:
JBuilder、Eclipse、SunOneStudio、WSAD
Java语言基础
内容:
标示符、关键字、Java基本数据类型、运算符、表达式和语句、分支、循环、方法、变量的作用域、递归调用。
一.标示符
1.Java对各种变量、方法和类等要素命令时使用的字符序列称为标识符。
凡是自己可以取名字的地方都叫标识符,都遵守标识符的规则。
2.Java标识符命名规则
1)标识符由字母、下划线“_”、美元符“$”或数字组成。
2)标识符应以字母、下划线、美元符开头(数字不能作为开头)。
3)Java标识符大小敏感,长度无限制。
3.约定俗成:
Java标识符选取应“见名知意”且不能与Java语言的关键字重名。
二.关键字
1.Java中一些赋以特定的含义,用作专门用途的字符串称为关键字(keyword)。
大多数编辑器会将关键字用特殊方式标出。
2.所有Java关键字都是小写英文。
3.goto和const虽然从未使用,但也被作为Java关键字保留。
三.Java常量
1.Java的常量值用字符串表示,区分为不同的数据类型。
1)如整型常量123
2)实型常量3.14
3)字符常量’a’
4)逻辑常量true、false
5)字符串常量”helloworld”
2.注意:
区分字符常量和字符串常量
3.注意:
“常量”这个名词还会用在其它语境中表示值不可变的变量(final关键字)
四.Java变量
1.Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。
2.Java程序中每一个变量都属于特定的数据类型,在使用前必须对其声明,声明格式为:
typevarName[=value][{,varName[=value]}]
3.例如:
inti=100;
floatf=12.3f;
doubled1,d2,d3=0.123;
Strings=“hello”;
4.从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先声明,然后必须进行赋值(填充内容),才能使用。
栈
堆
5.Java变量的分类
1)按被声明的位置划分
局部变量:
方法或语句块内部定义的变量。
成员变量:
方法外部、类的内部定义的变量。
注意:
类外面(与类对应的大括号外面)不能有变量的声明。
2)按所属的数据类型划分
基本数据类型变量
引用数据类型变量
6.Java局部变量与成员变量
1)方法体内部声明的变量(包括形参)称为局部变量。
方法体内部是指与方法对应的大括号内部。
2)在方法体外、类体内声明的变量称为成员变量。
五.Java数据类型的划分
Java中定义了4类8种基本数据类型:
逻辑型—boolean文本型—char
整数型—byte、short、int、long浮点数型—float、double
1.逻辑型boolean
a)boolean类型适于逻辑运算,一般用于程序流程控制。
b)boolean类型数据只允许取值true或false,不可以0或非0的整数替代true和false,这点和C语言不同。
c)用法举例:
booleanflag;
flag=true;
if(flag){
//dosth.
}
2.字符型char
a)char型数据用来表示通常意义上的“字符”
b)字符常量为用单引号括起来的单个字符,例如:
Charm=‘a’;charn=‘中’;
c)Java字符才用Unicode编码,每个字符占两个字节,因而可用十六进制形式表示,例如:
charc1=‘\u0061’;注:
Unicode是全球语言统一编码
d)Java语言中还允许使用转义字符’\’来将其后的字符转变为其它的含义,例如:
charc2=‘\n’;//’\n’代表换行符
e)补充:
2进制、10进制、16进制之间的转换
A.10进制转2进制:
除2取余,逆序排列
小数部分:
乘2取整,顺序排列
用十进制整数去除2,可得到一个商和余数;再用商去除2,又会得到一个商和余数,如此进行,直到商为0时为止,逆序排列余数
用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。
或者达到所要求的精度为止。
B.10进制转8进制、16进制与转成2进制方法相同,但基数是8或16。
C.2进制转换为8进制
从小数点开始,将二进制数的整数和小数部分每三位分为一组,不足三位的分别在整数的最高位前和小数的最低位后加“0”补足,然后每组用等值的八进制码替代,即得八进制数。
例:
(11010111.0100111)2=(327.234)8
D.二进制数与十六进制数的相互转换
由于16=2的4次方,所以在将二进制数转换成十六进制数时,从小数点开始将,二进制数的整数和小数部分每四位分为一组,不足四位的分别在整数的最高位前和小数的最低位后加“0”补足,然后每组用等值的十六进制码替代,即得目的数。
十六进制数转换成二进制数时正好相反,一位十六进制数用四位二进制数来替换。
对于有小数的数,要分小数和整数部分处理。
例:
(111011.10101)2=(3B.A8)16
E.八进制转成十六进制可先转成二进制再转成十六进制
转换表:
3.整数型
A.Java各整数类型有固定的表述范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性.
B.Java语言整型常量的三种表示形式:
十进制整数,如:
12,-314,0。
八进制整数,要求以0开头,如:
012。
十六进制整数,要求以0x或0X开头,如0x12。
C.Java语言的整型常量默认为int型,声明long型常量必须后加L,如:
Inti1=600;//正确
longl1=88888888888888L;//必须加L,否则出错
注:
Java里没有无符号的整数,所有的数都带符号,符号占一位。
4.浮点类型
A.与整数类型相似,Java浮点型有固定表数范围和字段长度,不受平台影响
B.Java浮点类型常量有两种表示形式
十进制数形式,如:
3.14314.0.314
科学计数法形式,如:
3.14e23.14E2100E-2
C.Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字的后面加f或F,如:
doubled=12345.6;//正确
floatf=12.3f;//必须加f,否则会出错
5.基本类型数据转换
A.boolean型不可以转化为其它的数据类型。
B.整型、字符型、浮点型的数据在混合运算中相互转换应遵循以下原则:
a.容量小的类型自动转换为容量大的数据类型
byte,short,char->int->long->float->double
byte,short,char之间不会相互转换,它们在计算时首先会转换为int型
b.容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出,使用时要格外注意
c.有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那一种数据类型,然后再进行计算
d.实数常量(如:
1.2,0.1)默认为double
e.整型常量(如:
123)默认为int
publicstaticvoidmain(Stringargs[])
{
intI=1,j;
floatf1=0.1;floatf2=123;
longl1=12345678,l2=888888888888;
doubled1=2e20,d2=124;
byteb1=1,b2=2,b3=129;//b3超出取数范围,需加强制转换符
(byte)或更改为int型
byteb=b1–b2;//系统强制转换为int后再运算,需加
强制转换符(byte)
j=j+10;//j在使用前应赋值
i=i/10;
i=i*0.1;//有小数先转换为double再运算,所
得加强制转换符(int)
charc1=‘a’,c2=125;
charc=c1+c2–1;//系统强制转换为int后再运算,需加
强制转换符(char)
floatf3=f1+f2;
floatf4=f1+f2*0.1;//0.1默认为double,需加强制转换符
doubled=d1*i+j;
floatf=(float)(d1*5+d2);
}
附:
格式应该注意的问题:
a.大括号对齐
b.遇到{缩进,Tab键
c.程序块之间加空行
d.并排语句之间加空格
e.运算符两侧加空格(有特定条件)
f.{前面有空格
g.{}成对编程
六.运算符
1.Java运算支持如下运算符:
2.自加和自减运算符
3.逻辑运算符
!
—逻辑非&—逻辑与I—逻辑或^—逻辑异或&&—短路与II—短路或
4.赋值运算符(=)
A.当“=”两侧数据类型不一致时,可以使用默认类型转换或使用强制准换类型转换原则进行处理:
longm=100;intn=(int)m;
B.注意:
可以将整型常量直接赋值给byte、short、char等类型变量,而不需要强制类型转换,只要不超出其表数范围。
5.字符串连接符(+)
A.“+”除用于算数加法运算外,还可用于对字符串进行连接操作。
intid=800+90;Strings=“hello”+“world”;
B.“+”运算符两侧的操作数只要有一个是字符串类型(String),系统会自动将另一个操作数转换为字符串然后再进行连接。
intc=12;System.out.println(“c=”+c);
C.当进行打印时,无论任何类型,都自动转为字符串进行打印。
6.
表达式
A.表达式是符合一定语法规则的运算符和操作数的序列
B.表达式的类型和值
C.表达式的运算顺序,如右图:
7.三目条件运算符
程序运行结果:
type=及格flag=-1
8.if语句
9.switch语句
10.循环语句
11.break&continue语句
循环语句举例:
12.方法
publicclassTestMethod{
publicstaticvoidmain(Stringargs[]){
m();//方法调用
m2(5);
m3(‘3’,4);//m3方法的值都是int型,而‘3’为char型使用时系统先把‘3’自动转换成ASCII
码对应的int值进行调用
m4(4,6);
inti=m4(4,6);
System.out.println(i);
}
publicstaticvoidm(){//
//return;
System.out.println(“ok”);
System.out.println(“Hello!
”);
}
publicstaticvoidm2(inti){
if(1>3)
return;
System.out.println(i);
}
publicstaticvoidm3(inti,intj){
System.out.println(i+j);
}
publicstaticvoidm4(inti,intj){
returni>j?
i:
j;
}
}
13.递归调用
publicclassy1{
publicstaticvoidmain(Stringargs[]){
System.out.println(f(5));
}
staticlongf(intindex){
if(index==1||index==2)
return1;
else{
longf1=1L;
longf2=1L;
longf=0;
for(inti=3;i<=index;i++){
f=f1+f2;
f1=f2;
f2=f;
}
returnf;
}
}
}
面向对象编程
一.编程语言的发展
机器语言——汇编语言——高级语言——面向对象的语言
二.设计思想
三.对象和类的概念
四.类(对象)之间的关系
1.关联关系:
2.继承关系(一般和特殊)
XX是一种XX
3.聚合关系(整体和部分)
聚集组合
4.实现关系
5.多态
五.
六.
七.
八.