快捷键: 1、生成main方法的快捷键 psvm 2、换行输出快捷键 sout 3、多行复制 ctrl + alt + 下键 4. 代码格式化:ctrl+alt+L 5. 快速\取消注释 ctrl+/ \t 代表Tab键 默认是4个空格 变量 定义变量的格式: 1、数据类型 变量名 = 初始化值; 2、数据类型 变量名; 变量名 = 初始化值; 数据类型: 基本数据类型 整数类型 占用字节数 可表示的范围 byte 1 -2^7 ~ 2^7-1 short 2 -2^15 ~ 2^15-1 int 4 -2^31 ~ 2^31-1 long 8 -2^63 ~ 2^63-1 浮点类型 float 4 -3.403*10^38 ~ 3.403*10^38 double 8 -1.798*10^308 ~ 1.798*10^308 字符型 char 2 布尔型 boolean 1
自动类型转换:
byte,short,char—int—long—float—double
byte,short,char在参与运算的时候会自动提升到int类型
由大的数据类型接收小的数据类型,会自动转换,不会报错。
强制类型转换:
由小的数据类型接收大的数据类型,会报错,接收不了,这时候需要强制类型转换
格式:目标数据类型 目标变量名 = (目标数据类型)(要转换的数值/变量)
变量相加和常量相加不一样:
1、变量相加首先会提升数据类型,然后再相加赋值,如果接收的数据类型范围小于计算结果后的数据类型范围,报错,不能赋值
2、常量相加,会先进行计算,计算完后看看在不在接收的数据类型范围内,如果在,直接赋值,如果不在,报错。
/*
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
*/
public class DataTypeDemo4 {
public static void main(String[] args) {
// int a = 3;
// byte b = 4;
// int c1 = a + b;
//
// byte c2 = (byte)(a + b);
// System.out.println(c2);
byte b1=3,b2=4,b;
// b=b1+b2;
b=(byte)(b1+b2);
b=3+4;
}
}
运算符
+号的用法:
1、当加号两边都是数字或者是数字和字符的时候,这时候的+号做的是加法运算
2、当加号两边其中是字符串的时候,做的是字符串拼接,拼接后是一个新的字符串
3、字符串与任何数值做加法,做的是字符串拼接,拼接后是一个新的字符串
++:自加1
当++在前的时候,先自加1,再做赋值操作,当++在后的时候,先做赋值操作,再做自加1
--:自减1
当--在前的时候,先自减1,再做赋值操作,当--在后的时候,先做赋值操作,再做自减1
s=s+1和s+=1不同
short s=1, s = s+1;
short s=1, s += 1;
上面两个代码有没有问题,如果有,那里有问题
第一个有问题,因为变量参与运算,首先会提升数据类型,然后做运算。所以 s = s+1;s会提升到int类型然后再做加法运算,最终的
结果是int类型,所以拿short类型接收会报错,所以要想成功赋值,就得强制类型转换。
第二个代码没有问题,是因为内部自动包含了强制类型转换,s+=1 ===> s = (s的数据类型)(s+1)
关系运算符
注意事项:
1、关系运算符的表达式的结果是一个boolean类型,要么是true,要么是false
2、==不能少写,一个=是赋值运算符,==才是关系运算符
3、赋值的时候要注意类型问题,关系运算符表达式的结果是boolean类型,所以接收的时候只能是boolean类型的变量接收
逻辑运算法
逻辑运算符的两边放的是boolean类型的值,计算的结果也是一个boolean类型的值
&: 参与运算的时候,两边有false,则false,两边都做运算
|: 参与运算的时候,两边有true,则true,两边都做运算
^: 参与运算的时候,相同为false,不同为true,两边都做运算
!: 将true变成false,false变成true
&&: 短路与,结果和单个与结果一样,有false则false,但是执行的东西不一样,
当&&左边的表达式结果为false的时候,结果是false,右边不执行
||: 短路或,结果和单个或结果一样,有true则true,但是执行的东西不一样,
当||左边是true的时候,右边不执行,结果是true.
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6
三目运算符:又称之为三元运算符
格式:(关系表达式)?表达式1:表达式2;
如果关系表达式的结果为true,运算后的结果是表达式1;
如果关系表达式的结果为false,运算后的结果是表达式2;
注意事项:
1、三目运算符表达式的结果数据类型由三目运算符表达式1和表达式2中最大的数据类型决定的。
2、关系表达式一定只能是boolean类型
位运算符
由于数据在计算机中参与运算的都是补码,而想要知道补码,就得知道反码,原码,就得求出二进制
& 运算:有0则0
| 运算:有1则1
^ 运算:相同则0,不同则1
~ 运算:1变成0,0变成1
<<: 左移,二进制(补码)左移,右边用0补齐,多出来的丢弃
>>: 右移,最左边最高位是0用0补齐,最高位是1就用1补齐,多出来的丢弃。
>>>: 无符号右移,无论左边最高是0还是1,都用0补齐,多出来的丢弃。