整型:byte(一个字节)、short(2个字节)、int(4个字节)、long(8个字节)
浮点型:float(4个字节)、double(8个字节)
字符型:char(2个字节)
布尔类型:boolean(大小不固定一般当做int)
默认值:byte(0)、short(0)、int(0)、long(0)、float(0.0f)、double(0.0d)、boolean(false)
2.引用类型.......
二、变量 1.概念内存上的一块区域,数据的基本存储单位。
2.组成变量的数据类型 + 变量名+=+值(数据)
3.种类以及生命周期局部变量(在方法内部声明的,生命周期跟随着方法被调用产生栈帧而生成,随着方法的调用结束而销毁),实例变量(在类中声明没在方法内声明而且没加static,生命周期跟随着类),静态变量(声明在类中,前面有static,生命周期跟随着类)
三、类型转换 1.数据类型的自动提升当小数据类型赋值给大数据类型时,自动发生类型提升。
(通过数据存储的范围来判断大小)
规则如下:
byte->short->int->long->float->double
char->int->long->float->double
2.强制类型转换当大数据类型被赋值给小数据类型时,需要使用强制类型转换。
规则:
大数据类型 +大数据类型变量名=值
小数据类型+变量名=(小数据类型)大数据类型变量名
转换结果
① 浮点型强转为整型,指直接取整数部分
例如:double a=10.0;
int b=(int)a;
②当大数据类型的整型的值在小数据类型的整型的范围内,不会发生损失
例如:int a=10;
short b=(short)a;
此时b的值还是为10
③当大数据类型的整型的值超出了小数据类型的整型的值的范围,数据会发生损失
例如:int a=256;
short b=(short)a;
此时b的值为1;
四、运算符 1.算术运算符基本运算符:+ - * / %
其中最需要注意的是除法
a. int/int的结果还是int,如果需要较为准确的答案是可以用double
例如:
int a=10; int b=20; System.out.println(a/b);
此时输出0;
double a=10.0; double b=20.0; System.out.println(a/b);
此时输出0.50000;
b. 0不能作为除数
当0作为除数时,会抛异常
c.%表示取模,既能对int取模也能对double取模
例如:
double a=11.5 System.out.println(a%2);
此时输出1.5;
2.赋值运算符增量赋值运算符:= += -= *= /= %=
注意:+= 没有自动类型提升。
byte b = 1; b = b + 1; System.out.println(b);//编译报错 byte a= 1; a+=1; System.out.println(a); //编译通过,原因:+=没有自动类型提升,打印结果为2
自增运算符:++ --
int a = 10; int b = ++a; System.out.println(b); int c = a++; System.out.println(c);
结论:1. 如果不取自增运算的表达式的返回值, 则前置自增和后置自增没有区别.
2. 如果取表达式的返回值, 则前置自增的返回值是自增之后的值, 后置自增的返回值是自增之前的值
==, <=, >=,!=,>,<
表达式的结果类型为布尔类型,这样的表达式称为布尔表达式。
注意:用关系运算符连接的表达式都为布尔表达式,
关系成立-true;关系不成立结果为false.
4.逻辑运算符&& || !
注意: 逻辑运算符的 *** 作数( *** 作数往往是关系运算符的结果)和返回值都是 boolean!
a.逻辑与&&
当两个 *** 作数都为true时,结果才为true(短路运算符)
b.逻辑或||
当两个 *** 作数其中一个为true,结果就为true(短路运算符)
c.逻辑非!
*** 作数为true时结果为false, *** 作数为false时结果为true
d.&和|
效果与&&和||相差不大,只是不支持短路求值。
5. 条件运算符(三元运算符) 语法:布尔表达式 ? 表达式1: 表达式2;
原理:如果布尔表达式的结果为true,则执行表达式1,否则执行表达式2.
例如:
int a=10; int b=20; int c=(a>b?a:b);
此时c的值为b的值
6.位运算符java中的最小 *** 作单位不是字节,而是二进制位(bite位)
位运算符一共有四个
& | ~ ^
按位与 &: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.
例如:
int a=3;011 int b=7;111 System.out.println(a&b);//结果为3(011)
按位或|:如果两个二进制位都为0,结果为0,否则为1.
例如:
int a=3; int b=7; System.out.println(a|b);//结果为7
按位异或^:如果两个二进制位相同则为0,不同则为1.
例如:
int a=3; int b=7; System.out.println(a^b)//结果为4
按位取反~:如果二进制位为1则变为0,为0则变为1.
例如:
int a=1; System.out.println(~a);//结果为-27.移位运算符
左移运算符<<
*** 作数的二进制位左移一位,右边补0
右移运算符>>
*** 作数的二进制位右移一位,左边补符号位(正数补0,负数补1)
无符号右移运算符>>>
*** 作数的二进制位右移一位,左边补0
注意:
1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
4. 移动负数位或者移位位数过大都没有意义.
按照代码书写的顺序一步一步的执行
int a=10; int b=20; System.out.println(a); System.out.println(b); //程序按书写的顺序依次打印a,b2.分支结构
if语句
基本语法形式1
if(布尔表达式){
}
如果布尔表达式为真则执行{}中的内容
基本语法形式2
if(布尔表达式){
}else {
}
如果布尔表达式为真则执行第一个{}中的内容,否则则执行else{}中的内容
基本语法类型3
if(布尔表达式){
}else if(布尔表达式){
}else{
}
如果第一个布尔表达式为真则执行if{}中的内容,若第二个布尔表达式的内容为真则执行else if{}中的内容,若所以布尔表达式都为假,则执行else{}中的内容
switch语句
switch(整数|枚举|字符|字符串){
case 内容1{
内容满足时执行语句;
break;
}
case 内容2{
内容满足时执行语句;
break;
}
.....
default :{
内容都不满足时执行;
break;
}
}
例如:
int day=1; switch(day){ case 1{ System.out.println("星期一"); break; } case 2{ System.out.println("星期二"); break; } case 3{ System.out.println("星期三"); break; } case 4{ System.out.println("星期四"); break; } case 5{ System.out.println("星期五"); break; }case 6{ System.out.println("星期六"); break; } case 7{ System.out.println("星期天"); break; } default:{ System.out.println("输入有误"); break; } }
注意:
1.break不要遗漏,否则会造成多个分支被执行。
2.switch中的值只能是整数|枚举|字符|字符串。
3.switch不能表示过于复杂的条件。
3.循环结构1.whlie循环
while(循环条件){
循环语句;
}
循环条件为 true, 则执行循环语句; 否则结束循环
例如:
int num=0; while(num<10){ System.out.println(num); num++; }
这个程序会循环10次,分别打印0到9
注意:
1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.
3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.
while中同样有break,他可以让循环提前结束并退出
例如:
int num=0; while(num<10){ if(num==5){ System.out.println("找到5了"); break; } num++; }
这个程序会在num=5时,退出循环
continue的功能时跳过本次循环进入下一次循环
例如:
int num=0; while(num<10){ if(num==5){ num++; continue; } System.out.println(num); num++ }
这个程序不会打印5,他被跳过了。他与break不同的是他不会结束循环而是跳过本次循环进入下次循环。
2.for循环
for(表达式1;表达式2;表达式3){
循环体;
}
表达式1: 用于初始化循环变量.
表达式2: 循环条件
表达式3: 更新循环变量.
例如:
for(int i=0;i<10;i++){ System.out.println("你好"); }
这个程序会打印10次你好
注意 (和while循环类似)
1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
2. 和 if 类似, for 后面的 { 建议和 while 写在同一行.
3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行
3.do while循环
do{
循环语句;
}while(循环条件);
先执行循环语句, 再判定循环条件
例如:
int i=0; do{ System.out.println(i); num++; }while(num<10)
注意:
1. do while 循环最后的分号不要忘记
2. 一般 do while 很少用到, 更推荐使用 for 和 while
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)