阅Java核心技术卷笔录一
一.基础知识
1.命名规范
1. 类名(接口名):首字母大写,其它均为小写。如果由多个单词组成每个单词首字母大写,其它均为小写。如(ArrayList,HashMap,PreparedStatement)
2. 变量名:均为小写。如果由多个单词组成从第二个单词开始,每个单词首字母大写,其它均为小写。如(name,userPassword,userAge)。
3. 方法名:与变量名相同。如(setName(),getAge(),selectAll(),insert())
4.包名:均为小写。如:oracle.jdbc.driver.OracleDriver
5. static final修饰的常量:均为大写。如果由多个单词组成,所有字母均为大写,单词之间使用下划线分隔。如:MAX_LEVEL
6. 泛型:一个大写英文字母。
7.注意文件名必须与公共类的名字相同
8.标识符(类名,方法名,变量名,接口名,包名等):
i.标识符由字母,数字,下划线,美元符组成。
ii.不能使用数字开头。
iii.不能使用关键字(关键字均为小写)。
iv.不能使用true,false,null这三个特殊的值作为标识符。
在命令行中进行编译时命令为 Javac *.java
Java是一种强类型语言,必须为每一个变量声明一种类型。
Java的数据类型只有两种数据类型:基本数据类型,引用数据类型。
2.基本数据
一共有8种:byte,short,int,long,float,double,char,boolean
a)整数:Java中没有无符号的数字(无符号数中,所有的位都用于直接表示该值的大小。有符号数中最高位用于表示正负。有符号数包括负数,无符号数只有整数。)Java中可以表示十进制的整数,可以表示八进制的整数(使用0开头),可以表示十六进制的整数(使用0X或0x开头)
1.byte:1个字节 ,-2的7次方 - 2的7次方-1
2.shrot:2个字节,-2的15次方 - 2的15次方-1
3.int: 4个字节,-2的31次方 - 2的31次方-1
4.long: 8个字节,-2的63次方 - 2的64次方-1
b)浮点数:Java中 浮点数运算会产生一定的误差
1.float:4个字节,单精度,在浮点数后面加F或f
2.double:8个字节 ,双精度,Java默认的浮点数为double类型。
c)字符类型:char值必须出现在一对单引号中,通常情况下单引号只出现一个字符,Java使用的是Unicode字符集,所有的字符均为两个字节。
d)布尔类型:boolean只有两个值:true/false。在Java中不能用0和1表示。
3.变量
a)格式:数据类型 变量名[=值] 例:int i=1;
b)同一个范围不能出现同名的变量
c)当变量没有赋值时不能使用,否则编译失败。
4.常量
a) 使用final关键字修饰的变量,称为常量(最终变量)。
b)只能赋值一次。
5.基本数据类型的类型转换
a)boolean类型不能与其他类型转换。
b) 比较基本数据类型的大小:
i:首先比较基本数据 类型的精度,精度大的类型的。
ii: 当精度相同时,再比较字节数
c) 精度低的类型可以直接转换为精度高的类型(小的可以直接赋给大的)
d) 精度高的类型赋给精度低的类型 时需要进行强转(强制类型转换)。
e) 当值(不是变量)在类型的取值范围内时,jvm会自动将值得类型转换成需要的类型。
6.运算符
a) 算术运算符:+,-,*,/,%,++,–
i.当参与算术运算的元素类型相同时,算术结果的类型一定与参与运算元素的类型保持一致。(类型一致结果类型不变)
ii.当参与算术运算的元素类型不同时,算术运算结果的类型一定与精度元素类型保持一致。(类型不一致结果类型为精度高的类型)
iii.整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。
iv.++/--可以出现在变量的前面/后面,无论放在前后代码执行的变量一定会加1/减1.
v.++/--放在变量的后面:先取值,再计算。
vi.++/--放在变量的前面:先计算,再取值
b)扩展算术运算符:+=,-=,*=,/=,%=,会自动转换结果的类型。
c)比较运算符:结果的类型一定是Boolean类型
d)逻辑运算符:结果的类型一定是Boolean类型
i. 逻辑与(&),逻辑或(|)
1.逻辑与:只要有一个false,结果就为false;当第一个表达式为false时,仍然会执行第二个表达式,返回false。
2.逻辑或:只要有一个true,结果就为真;当第一个表达式为true时,仍然会执行第二个表达式,返回true。
ii.短路与(&&) 短路或(||)
1.短路与:当第一个表达式为false时,不执行第二个 表达式,直接返回false。
2.短路或:当第一个表达式为true时,不执行第二个表达式,直接返回true。
iii.逻辑非:!,取反 。
e)三元运算符(三目运算符):x?y:z; 当x为true时,返回y。当x为false时,返回z.
7.枚举类型
当现有的类型不够使用时可以自定义枚举类型,枚举类型包括有限个命名的值。
8.字符串
1.概念:Java字符串就是Unicode(不可变)字符序列。
2.Java.lang.String类:final的类。
3.每次对String的修改都会产生新的字符串对象。所以如果 需要大量修改字符串时不建议使用string类型。
4.String重写了Obeject类中的equals()方法,用于判断字符串的内容是否相等。
5.String的方法不会改变自身的内容。
6.Java.lang.StringBuffer类与java.lang.StringBuilder类:都表示Java中可变的字符序列。
7.StringBuffer与StringBuilder的区别:
i.StringBuffer是线程安全的。
ii.StringBuilder是线程不安全的。建议使用StringBuilder效率高。
8.每次对StringBuffer和StringBuilder的 修改不会产生新的字符串对象,所有需要大量修改字符串时,建议使用stringBuffer和StringBuilder。
9.StringBuffer与StringBuilder也是final的类。
10.StringBuffer与StringBuilder的方法会改变自身的内容。
11.StringBuffer与StringBuilder没有重写Object类中的equals(),所以不能使用 equals()判断StringBuffer与StringBuilder的内容是否相等。
9.输入输出
1.输入:首先构造一个Scanner对象,再使用Scanner类 的各种方法实现输入操作。
Scanner in = new Scanner(System.in);
2.输出:System.out.print();
10.流程控制:顺序 结构,选择结构,循环结构
i.if语句:当if语句匹配到一个分支后,将不再匹配其它的分支,直接跳转到if语句的结束。
ii.switch语句
switch(变量){
case 值:
代码;
[break;]
case 值:
代码;
[break;]
.......
[default:
代码;
break;
]
}
switch语句将从选项值相匹配的case标签处开始执行知道遇到break语句,或者执行到switch语句结束处为止。如果没有相匹配的case标签,而有default字句,就执行这个字句。
case后面的值不能重复。
case后面的值只能为常量或字符串字面值。
iii.while循环
a.while(循环条件){
循环体;
}
1.当不确定循环次数时建议使用while循环。
2.循环条件的结果必须为boolean类型。
3.while循环:先判断,在循环。
b.do ... while循环
do{
循环体;
}while(循环条件);
1.循环的大括号不能省略
2.循环必须使用分号表示结束
3.循环条件的结果必须为boolean类型
4.do..while循环:先循环,在判断。
iv.for循环
格式:
for(循环变量初始化;循环条件;循环变量的自增/自减){
循环体;
}
i. 当确定循环次数时,建议使用for循环。
ii. for循环的三部分都可以省略,但分号不能省略。
iii. for循环第一部分声明的变量,是for循环的局部变量。只能在for循环内使用,循环外不能使用。
iv. for循环的第一部分可以声明多个类型相同的变量。
v. 循环条件的结果必须为boolean类型。
vi. for循环大括号,如果省略作用范围只有一行Java代码。
for(int i = 1 ; i <= 4 ; i++){
System.out.println(i);
}
*第一次循环:先执行第一部分,声明循环变量i = 1;再执行第二部分,判断i <= 4,返回true,进入循环。
* 第二次循环:先执行第三部分,i++。i=2;再执行第二部分,判断i <= 4,返回true,进入循环。
* 第三次循环:先执行第三部分,i++。i=3;再执行第二部分,判断i <= 4,返回true,进入循环。
* 第四次循环:先执行第三部分,i++。i=4;再执行第二部分,判断i <= 4,返回true,进入循环。
* 第五次循环:先执行第三部分,i++。i=5;再执行第二部分,判断i <= 4,返回false,结束循环。
11.中断循环
a) break:不能单独使用。只能出现在switch或循环语句中。在循环中的作用:立即结束所在循环。
b)continue:不能单独使用。只能出现在循环语句中。作用:使所在循环立即结束本次循环,直接进入下一次循环。
12.数学函数
Math.random(): 返回大于等于0.0,并且一定小于1.0的double类型的随机数。
Math.sprt():计算一个数值的平方根
Math.pow():计算一个数值的幂次方运行算 double y = Math.pow(x,a)
13.数组
数组:是一组相同数据类型的集合。
a)java中所有的数组都是引用数据类型。
b)一维数组:
i.声明一维数组格式:数据类型[] 数组名;/数据类型 数组名 []
ii.声明数组是在栈中开辟一个空间,用于保存数组的名字。所以声明数组时不能指定数组 的长度。
iii.创建一维数组:在堆中开辟一个连续的空间。所以在创建数组时必须直接或间接地指定数组的长度。
iv.基本数据类型中保存的是值。
v.引用数据类型中保存的是引用。
vi.通过下标访问或设置数组指定位置的值。
vii.java中数组的下标从0开始。数组最大下标:数组的长度减1.
viii.数组的长度可以为0,但不能是负数(如果长度为负数,程序运行时会发生异常)。
ix.通过数组的.length属性,获得数组的长度。