软件设计之Java入门视频(3)
视频教程来自B站尚硅谷:
尚硅谷Java入门视频教程,宋红康java基础视频
相关文件资料(百度网盘)
提取密码:8op3
学习内容:
该视频共分为1-717部分
ps: 去除图片水印可以在博客设置中取消水印设置
本次内容涉及60-89
记录内容:
- 引用数据类型之String
- 二进制
- 运算符
1、引用数据类型之String(字符串)
在此之前先对数据类型的划分进行图片说明:
注意事项:
(1)声明String类型变量时,使用的是一对" "
(2)String可以和8中基本数据类型进行运算,并且只能是连接运算: +
(3)运算结果仍然是String类型
(4)String不参与自动提升算法中的顺序排列
String类型计算练习判断
char c = 'a'; //对应int值是97
int num = 10;
String str = "Hello" ;
System.out.println(c + num + str) //107Hello
System.out.println(c + str + num ) // aHello10
System.out.println(c + (num + str)) // a10Hello
System.out.println((c + num) + str) // 107Hello
System.out.println(str + num + c) // Hello10a
2、 二进制
二进制原码、反码、补码
计算机以二进制补码的形式保存所有的整数
原码: 直接将一个数值换成二进制数。最高位是符号位
负数的反码: 是对原码按位取反,只是最高位(符号位)确定为1
负数的补码: 其反码加1
为什么一个byte字节的数字范围是-128~127?
为什么int型变量为128 强制转换成byte成了-128?
int a = 128 ;//int 是4个字节 0000 0000 0000 0000 0000 0000 1000 0000
byte b = (byte)a; //byte 是一个字节 1000 0000 对应就是-128
3、运算符
算术运算符
取余运算符% 结果符号与被模数的符号相同(此处的符号表示正负号)
a % b 其中 a是 被模数
int m1 = -12;
int n1 = 5;
int a1 = m1 % n1 ; //a1 = -2 与 m1 符号相同
int m2 = 12;
int n2 = -5;
int a2 = m2 % n2 ; //a1 = 2 与 m2 符号相同
自增运算符:
前++: 先自增1,后运算
后++: 先运算,后自增1
自减运算符:
前- -: 先自减1,后运算
后- -: 先运算,后自减1
自增/自减运算符不会改变本身变量的数据类型
int m = 10;
int n = ++ m; //n = 11 , m =11
int q = m ++ ; // q = 11, m = 12
逻辑运算符
逻辑运算符针对boolean
& 逻辑与 &&短路与
| 逻辑或 || 短路或
! 逻辑非
^ 逻辑异或
逻辑与/或 和 短路 与/或 的区别
区分 & 与 &&
相同点1:&与&&运算结果相同
相同点2:当符号左边为true,两者都会执行符号右边的运算
不同点:当符号左边为false,&继续执行符号右边运算,&&不执行。
boolean b1 = false ;
int num1 = 10 ;
if (b1 & (num1++ >0)){
System.println("结果A");
}else{
System.println("结果B");
}
//此时num1 = 11
boolean b2 = false ;
int num2 = 10 ;
if (b2 && (num1++ >0)){
System.println("结果A");
}else{
System.println("结果B");
}
//此时num2 = 10
区分 | 与 ||
相同点1:|与||运算结果相同
相同点2:当符号左边为false,两者都会执行符号右边的运算
不同点:当符号左边为true,|继续执行符号右边运算,||不执行。
boolean b1 = true ;
int num1 = 10 ;
if (b1 | (num1++ >0)){
System.println("结果A");
}else{
System.println("结果B");
}
//此时num1 = 11
boolean b2 = true ;
int num2 = 10 ;
if (b2 || (num1++ >0)){
System.println("结果A");
}else{
System.println("结果B");
}
//此时num2 = 10
位运算符
位运算符操作的都是整数型数据
<<: 在一定范围内,每向左移1位,相当于*2
>>: 在一定范围内,每向右移1位,相当于/2
所谓的一定范围就是把int型二进制写出来,左移是尾部补0,右移是头部补0(>>与>>>的区别就是当被移动对象首位为1时(负数嘛),前者最高位补的是1而不是0 )
面试题:最高效的计算 2 * 8 的方法
2<<3 或者 8<<1
三元运算符
结构: (条件表达式)? 表达式1 :表达式2
条件表达式结果是 boolean 类型
表达式为True, 执行表达式1
表达式为False,执行表达式2
三元运算符可以嵌套使用
问题:获取三个数最大值
int n1 = 1;
int n2 = 2;
int n3 = 3;
int max1 = (n1 > n2)? n1:n2;
int max2 = (max1 > n3)? max1:n3;