4.8显示式强制转换:
在前面加(byte)值、(short)值、(int)值、(char)值、(long)值、(float)值、(double)值,一般用于从高到低转型,这种情况可能会丢失精度、转换错误,一般不建议。
4.9ASCII码表:
4.10引用数据类型:
字符串(String)、数组(Arrays)、类(Class)、接口(Interface)
4.11基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址。
4.12对象的制表符占位是变量的两倍
4.13\xxx3位八进制表示的字符
\uxxx4位16进制表示的字符
\\反斜杠字符
\ttab制表符
\r回车
\n换行
\b退格
\f换页
5标识符与关键字
5.1定义:
标识符是用来标识某个对象(变量名、常量名、函数、类名、包名、接口名等)的名称
5.2标识符的命名规则
5.2.1标识符可以有字母、数字、下划线和$中的任意字符组成
5.2.2标识符首字母必须是字母、下划线或$,绝不能以数字开头
5.2.3标识符的命名要有一定的意义,不能使用关键字作为标识符
5.2.4标识符严格区分大小写
5.3Java中每个对象的命名规范
5.3.1包名(多单词组成时所有字母都小写 如:
xxxyyyzzz)
5.3.2类名和接口名(多单词组成时,每个单词的首字母都大写 如:
XxxYyyZzz)
5.3.3变量名和函数名(多单纯组成时,第一个单词的首字母小写,以后每个单词的首字母都大写 如:
xxxYyyZzz)
5.3.4常量名(多单词组成时,每个单词都大写,单词与单词之间使用下划线隔开 如:
XXX_YYY_ZZZ)
5.4Java中的关键字
5.4.1关键字中所有字母都小写
5.4.2数据类型的关键字(byte、short、int、long、float、double、char、boolean、class、interface、void)
5.4.3数据类型值得关键字(null、false、true)
5.4.4流程控制语句的关键字(if、else、switch、case、default、break、return、do、while、for、continue、try)
5.4.5权限修饰符的关键字(public、private、protected)
5.5.6修饰类、变量、函数修饰符的关键字(static、final、abstract)
5.5.7类与类,类与接口之间关系的关键字(extends、implements)
5.5.8建立实例及引用实例,判断实例的关键字(this、super、new、instanceof)
5.5.9处理异常的关键字(try、catch、finally、throw、throws)
5.5.10包的关键字(package、import)
5.5.11其他关键字(native、transient、volatile、assert、strictfp)
5.5.12注意:
main不是关键字,但是确是能被jvm识别的一个名称(非常特殊)
6常量与变量
6.1常量:
表示不能被改变的数值,用final定义
6.2常通常用大写字母
6.3常量分:
6.3.1整数常量 :
所有整数
6.3.2小数常量 :
所有小数
6.3.3布尔型常量:
true,false
6.3.4字符常量:
’4’,单个字母 ,单引号
6.3.5字符串常量:
”abc” 多个字母,双引号
6.3.6null常量,值为null
6.4变量:
就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间。
6.4.1变量分为成员变量、局部变量。
(1)成员变量分为实例变量、静态变量(类变量)。
(2)局部变量分为形参变量、方法体变量、代码块变量。
(3)成员变量的实例变量、静态变量都是在类中定义的,但在方法体外,其中静态变量有static关键字。
(4)局部变量是在方法中定义的,它在{}、条件、参数中私有,在其之外失效。
(5)Java同一函数中变量不允许嵌套定义。
(6)静态成员包括静态变量、静态常量。
7注释
7.1注释的分别用法
7.1.1类上面加的是文档注释
7.1.2函数上面加的是文档注释
7.1.3如果修饰符有改变的话,加多行注释
7.1.4代码中的某几句话,加单行注释
8运算符
8.1运算符执行的先后顺序,由高到低如下:
8.1.1增量和减量运算符:
8.1.2算术运算符
8.1.3比较运算符
8.1.4位运算符
8.1.5逻辑运算符
8.1.6三元运算符
8.1.7赋值运算符
8.2运算符的优先级
8.3|与||的区别
|:
无论左边是true,还是false,右边都运算。
||:
当左边为true时,右边不运算,因为结果肯定为true,左边为false,右边参与运算。
8.4&与&&的区别
&:
无论左边是true,还是false,右边都运算。
&&:
当左边为false时,右边不运算,因为结果肯定为false,左边为true,右边参与运算。
8.5与and,两边只要有一个为false,结果就是false,两边只要都为true,结果为true。
8.6或or,两边只要有一个true,结果为true,两边只要都为false,结果为false。
8.7异或,两边相同,结果为false,两边不同,结果为true。
8.8非not,取反。
!
true=false ,!
false =true
8.9位运算符是二进制运算的运算符,“位”是二进制的位,是最快的运算,但局限是基为2。
<<
左移
3 << 2=>3∗22=12
>>
带符号右移
3 >> 1=>3 / 21=1
高位空出来要补什么?
按原有数据的高位置是0补0,是1补1。
>>>
无符号右移
3 >>> 1=>3 / 21=1
右移空出来都拿0补
&
与运算
6&3=2
|
或运算
6|3=7
^
异或运算
6^3=5
~
反码
~6=-7
8.10【实例】:
左移,右移,无符号右移之间的区别
【1. << 与 >> 的区别】:
<<(左移)
其实就是乘以2的移动位数为次幂
>>(右移)
其实就是除以2的移动位数为次幂
【2. >> 时,正数和负数的区别】:
>>(正数右移时)
高位补0
>>(负数右移时)
高位补1
【3. >> 与 >>> 的区别】:
>>(带符号右移)
高位补0或1:
具体看原有值高位,是0补0,是1补1
>>>(无符号右移)
高位都补0
8.11三目运算符:
条件?
表达式1:
表达式2,当条件为true时执行表达式1,当条件为false时执行表达式2
9流程控制语句
9.1流程控制语句大致分为三种结构:
判断结构、选择结构、循环结构
9.2判断结构常用的几种格式
//第一种if
intx=5;
if(x==5){
/*当“x==5”成立,则执行该语句,反之则跳过“{}中的语句块,直接执行后面的其他代码”
System.out.println("条件成立,该语句成功执行");
}
//第二种ifelse
if(x==5){
//当“x==5”成立,执行该语句
System.out.println("条件成立,该语句成功执行");
}
else{
//当条件不成立时,执行该语句
System.out.println("条件不成立,该语句不执行");
}
//第三种ifelseifelse
if(x>5)
System.out.println("x>5成立,执行该语句");
elseif(x<5)
System.out.println("x<5成立,执行该语句");
else
System.out.println("前面条件都不成立时,执行该语句");
//第四种嵌套
intm=6;
if(x<10){
if(m==6){
System.out.println("当x<10并且m==6时执行该语句");
}
else{
System.out.println("当x<10并且m!
=6时执行该语句");
}
}
else{
System.out.println("当x<10不成立时执行该语句");
}
9.3选择结构语句格式
switch(条件表达式){
case匹配值1:
break;
case匹配值2:
break;
....
default:
break;
}
*/
switch(x){
case2:
System.out.println("x="+x);
break;
case3:
System.out.println("x="+x);
break;
case4:
System.out.println("x="+x);
break;
case5:
System.out.println("x="+x);
break;
case6:
System.out.println("x="+x);
break;
default:
System.out.println("x="+x);
break;
/*注意:
使用switch选择结构时,
(1)、条件表达式的结果只能是byte、int、short、char
(2)、case和default是没有书写顺序的,当没有匹配的case时,执行default
(3)、结束switch语句的方法有两种:
遇到break或者执行到switch语句结尾
(4)、case或default后面的break是可以省略的,当如果匹配的case或default没有对应的break,那么程序会继续往下执行,直到程序遇到break或者结束
9.4循环结构语句格式
//第一种:
while();
while(x<=10){
//循环体
System.out.println("x="+x);
x++;//使用x自增控制循环次数,防止死循环
}
//第二种:
dowhile();
do{
//循环体
System.out.println("x="+x);
x++;//使用x自增控制循环次数,防止死循环
}while(x<=10);
/*注意:
while和dowhile是由区别的,while是先判断后执行,而dowhile是先执行后判断,
也就是说,使用dowhile时,无论条件是否成立,循环体都会执行一次
*/
//第三种:
for();
for(System.out.println("a");x<=7;System.out.println("c"),x++){
System.out.println("b");
}
/*
总结:
通过运行程序发现控制台打印结果为:
abcbcbc
所以在使用for循环时应注意:
for循环的执行顺序是先执行“表达式1”,然后再判断“条件表达式”是否成立,
如果成立,则执行循环体,然后再执行“表达式2”然后再判断“条件表达式”是否成立,成立在执行循环体然后.....
但是当“条件表达式”不成立时,会结束循环
9.5循环体中可以使用break来退出循环体,使用continue来中止本次循环
9.6return为返回值,有多个return语句时,只执行第一个符合条件return语句。
9.7可以使用“No1:
”,来设置循环标签,配合breakNo1:
来中止循环体。
1可以是其它数字。
三、数组
10定义数组
10.1声明数组:
数据类型[ ]数组名;或数据类型数组名[ ];intarr[];或int[]arr
10.2分配数组空间:
数组名=new 数据类型[数组长度];arr=newint[5];
10.3数组赋值:
intarr[]=newint[]{1,2,3,4,5};或int[]arr=newint[]{1,2,3,4,5};或intarr2[]={1,2,3,4,5};int[]arr2={1,2,3,4,5};
10.4多维数组:
同上,例:
intarr[][]=newint[][]{{1,2,3},{4,5,6}};或int[]arr=newint[][]{{1,2,3},{4,5,6}};若为二维表格,则int[2][3],表示2行3列。
10.5数组分配空间后:
所有各元素的值都为0或null,
11数组方法:
11.1替换数组所有元素:
Arrays.fill(数组名,替换值)
11.2替换数组部分元素:
Arrays.fill(数组名,开始索引值,结束索引值,替换值),数组索引从0开始,不包括结束索引值。
不可超出数组元素范围,否则报错
11.3排序数组的元素(从小到大):
Arrays.sort(数组名)。
String数组排序顺序为:
数字、大写字母、小写字母
11.4复制数组元素:
Arrays.copyOf(数组元素,复制后的新数组长度),长度大于旧数组长度,整型用0补充,字符型用null补充,长度小于旧数组长度,则删除后面多余的元素。
11.5复制数组部分元素:
Arrays.copyOfRange(数组名,开始索引值,结束索引值),数组索引从0开始,不包括结束索引值。
11.6数组元素查询:
Arrays.binarySearch(数组名,查询值),数组索引从0开始。
11.7数组元素查询:
Arrays.binarySearch(数组名,开始索引值,结束索引值,查询值),数组索引从0开始,不包括结束索引值。
所有元素的值都小于查询值,则为arr.length。
如果元素不存在,则加“-”,并返回排序后第一个大于此键值的元素索引。
11.8遍历数组元素:
for(元素类型元素变量x:
数组名){引用了X的java语句}
11.9数组排序算法:
冒泡排序(比较相邻两个元素,较大的数往后冒泡)
直接选择排序(选出最大或最小,然后与最后一个元素交换,二次选出最大或最小,然后与倒数第个元素交换….)
反转排序(第一个与最后一个交换、第二个与倒数第二个交换,以此类推)
直接插入排序、希尔排序、快速排序、堆排序、归并排序、箱排序、基数排序
11.10将数组转换为字符串:
Arrays.toString(数组名)
11.11将一个数组转化为一个List集合:
Arrays.aslist(数组名);
四、字符串
12定义字符串
12.1声明字符串:
Stringstr;或Stringstr;未初始化的字符串,值为null
12.2创建字符串:
chara[]={'g','o','o','d'};与Strings=newString(a);,等价于Strings=newString("good");等价于Strings="good";
12.3提取字符数组:
chara[]={'g','o','o','d'};与Strings=newString(a,0,2);不包括2,等价于Strings=newString("go");
12.4连接字符串:
用“+”连接字符串与其它对象后,并产生一个String对象。
13字符串方法:
13.1获取字符串长度:
字符串对象.length()
13.2获取字符:
字符串对象.indexOf(字符)
13.3获取最后一个字符:
字符串对象.lastIndexOf(字符),当查空格时,即为最后一个字符的下一个索引位置。
13.4获取指定索引位置的字符:
字符串对象.charAt(索引位置)
13.5获取子字符串序列:
字符串对象.subSequence(开始索引位置,结束索引位置),返回值为:
charsequence接口类
13.6截取指定位置到结束的字符串:
字符串对象.substring(指定的索引位置),返回值为:
返回的是string
13.7截取开始位置到结束位置的字符串:
字符串对象.substring(开始索引位置,结束索引位置),不包括结束索引。
13.8去除字符首尾空格:
字符串对象.trim()
13.9去除字符首尾空格并输出长度:
字符串对象.trim().length
13.10字符串替换:
字符串对象.replace(旧字符或字符串,新字符或字符串)
13.11字符串正则表达式的替换:
字符串对象.replaceAll(旧正则表达式,新正则表达式)
13.12字符串正则表达式的首次替换:
字符串对象.replaceFirst(旧正则表达式,新正则表达式)
13.13替换字符串对象的“指定字符串”为空:
StringTokenizer(字符串对象,“指定字符串”),需要导入类:
java.util.StringTokenizer;对象.hasMoreElements():
判断是否还有空格;对象.append(字符串缓冲器.nextToken()):
向字符串缓冲对象追加内容;
13.14严格判断字符串是否相等:
字符串对象.equals(被比较的字符串对象),区分大小写。
返回值为布尔型。
13.15粗略判断字符串是否相等:
字符串对象.equalsIgnoreCase(被比较的字符串对象),不区分大小写。
返回值为布尔型。
这两个方法都是用来判断对象的值是否相等,而“==”是用来判断对象引用的地址是否一致。
13.16判断是否为字符串的开始字符串:
字符串对象.startsWith(“指定的开始字符串”)
13.17判断是否为字符串的开始字符串:
字符串对象.endsWith(“指定的结束字符串”)
13.18字符串转换为小写:
字符串对象.toLowerCase(),数字与非字符不受影响
13.19字符串转换为大写:
字符串对象.toUpperCase(),数字与非字符不受影响
13.20字符串分割:
字符串对象.split(分割符),可以用“|”定义多个分割符,例:
”,|#|@”,即为,#@三个分割符。
13.21字符串分割:
字符串对象.split(分割符,分割分数),可以用“|”定义多个分割符,例:
”,|#|@”,即为,#@三个分割符。
13.22将字符串拆分为字符数组:
字符串对象.toCharArray()
13.23是用来判断是否为字符:
Character.isDigit(单对象),它是java.lang.Character类的isDigit()方法
13.24定义字符串生成器:
StringBuffe