第二天
一、String数据类型的使用
1.String属于引用数据类型,翻译为字符串
2. 声明String类型变量时,使用一对“”
3. String可以和8种基本数据类型做运算,且运算只能是链接运算:+
练习 1:
char c = ‘a’;//a:97 A :65
int num = 10;
String str = “hello”;
①System.out.println(c + num + str);
输出为:107hello
②System.out.println(c + str + num);
输出为:107hello
③System.out.println(c + (str + num));
输出为:ahello10
④System.out.println((c + num )+ str);
输出为:107hello
⑤System.out.println(str + num + c);
输出为:hello10a
练习 2:
目标输出为:“* *”
①System.out.println("* *");
正确
②System.out.println(’’+’\t’+’’);
错误
③System.out.println(’’+"\t"+’’);
正确
④System.out.println(’’+’\t’+"");
错误
⑤System.out.println(’’+(’\t’+""));
正确
Tips:
string无法直接转化为int等基本数据类型(无论强转与自动提升)
需要后续学习Integer
二、常用进制及其相互转化
1.常用进制
①二进制(binary):0,1 ,满2进1.以0b或0B开头。
②十进制(decimal):0-9 ,满10进1。
③八进制(octal):0-7 ,满8进1. 以数字0开头表示。
④十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。
如:0x21AF +1= 0X21B0
Tips:二进制负数是补码的形式,确定其二进制数需要转化为原码
十进制转化为二进制规则
例:13转化为二进制
二进制与八进制,十六进制的转化:
①二进制转化为八进制,每三位二进制数转化为一位八进制数
②二进制转化为十六进制,每四位二进制数转化为一位十六进制数
三、运算符
1.算术运算符
Tips:
①取模结果的符号总与被取模的变量一致,如:-5%2=-1。此外,取模运算的结果不一定总是整数。
②对于除号“/”,它的整数相除和小数相除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。eg:5/2=2 。
③字符串只可以进行连接操作,他与任何其他基本数据类型的连接运算均为,吸纳进入字符串。例如:“Hello” + 5 =“Hello5”。
/*
练习:随意给出一个三位数的整数,打印显是它的个位数,十位数,百位数的值。
例如:
数字153的情况如下:
个位数:3
十位数:5
百位数:1
*/
class AriExer{
public static void main(String[] args){
int num = 187;
System.out.println("百位数:" + num/100);
System.out.println("十位数:" + num%100/10);
System.out.println("个位数:" + num%10);
}
}
2.赋值运算符
符号:=
①当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制
类型转换原则进行处理。
②支持连续赋值
③扩展赋值运算符: +=, -=, *=, /=, %=
练习一:
short s = 3;
s = s+2; ①
s += 2; ② ①和②有什么区别?
本质上没有区别,只是写法不同!
练习二:
int i = 1;
i *= 0.1;
System.out.println(i);//逻辑结果为0.1,只保留整数部分,故i=0.
i++;
System.out.println(i);//i=1。
练习三:
int m = 2;
int n = 3;
n *= m++; //m先参与运算,再++。故n=6;m=3。
System.out.println("m=" + m);
System.out.println("n=" + n);
练习四:
int n = 10;
n += (n++) + (++n);
//第一个n=10
//第二个n,现参与运算,再+1,故运算时,n=10,实际n=11;
//第三个n,先+1,再参与运算,故此时n=12.
//综上 n = 10 + 10 +12 = 32.
System.out.println(n);
3.比较运算符
Tips:
①比较运算符的结果都是boolean型,也就是要么是true,要么是false。
②比较运算符“==”不能误写成“=” 。
练习:
class CompareTest{
public static void main(String[] args){
int i = 10;
int j = 20;
System.out.println(i==j); //false
System.out.println(i = j); //20
boolean b1 = true;
boolean b2 = false;
System.out.println(b2 == b1); //false
System.out.println(b2 = b1); //true
}
}
4.逻辑运算符
&
—逻辑与
|
—逻辑或
!
—逻辑非
&&
—短路与
||
—短路或
^
—逻辑异或
注意
①“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
②“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
③异或(^)的理解:异或,追求的是“异”!,若左右两侧布尔值不同则结果为true
,反之为false
5.位运算符
位运算是直接对数的二进制进行的按位运算
位移规则:
左移时空出来的最低位都是由
"0"
来补位
6.三元运算符
/*
运算符之六:三元运算符
1.结构:(条件表达式)?表达式1 : 表达式2
2. 说明
① 条件表达式的结果为boolean类型
② 根据条件表达式真或假,决定执行表达式1,还是表达式2.
如果表达式为true,则执行表达式1
如果表达式为false,则执行表达式2
③ 表达式1 和表达式2要求是一致的。
④ 三元运算符是可以嵌套的
3. 凡是可以使用三元运算的地方,都是可以改写if-else。
反之,则不一定成立!!!
*/
class SanTest{
public static void main(String[] args) {
//获取两个整数的最大值
int m = 12;
int n = 5;
int max = (m > n)? m : n;
System.out.println(max);
//****************************************
//获取三个数中的最大值
int n1 = 12;
int n2 = 30;
int n3 = -43;
int max1 = (n1 > n2) ? n1 : n2;
int max2 = (max1 > n3) ? max1 : n3;
System.out.println("三个数中的最大值是:" + max2);
//此方法:pass,可读性太差
//int max3 = (((n1 > n2)? n1 : n2) > n3) ?((n1 > n2) ? n1 : n2) : n3;
//System.out.println("三个数中的最大值是:" + max3);
//改写成if-else
if(m > n){
System.out.println(m);
}else{
System.out.println(n);
}
}
}