引用数据类型(字符串)
类型:String ;取值范围:任何“ ”之间的内容都是字符串,包括空格;字符编码:Unicode字符序列。
String类型的字面取值示例:String str1 = “Hello”;String str2 = “分布式架构师”;
类型转换
自动类型转换:两种类型互相兼容;目标类型大于源类型。
示例:
short s = 123;
int i = s;//验证自动类型转换是否成功
System.out.println(i);//123 成功;两种类型兼容;目标类型大于源类型。
float f = 3.5F;
double d = f ;
System.out.println(d);//3.5
byte b = 10;
double d2 = b;
System.out.println(d2);//10.0
/*float d3 = 100.0;
long l = d3;
System.out.println(l);
Error;无法完成自动类型转换;整数无法保留小数的精度。*/
强制类型转换
强制类型转换:两种类型相互兼容;目标类型小于源类型。
整数长度足够,数据完整。整数长度不够,数据截断。(符号位变化,可能变为负数)
字符与整数互转,数据完整。
通过在源类型前面加上(目标类型);达到强制转换的目的,但是,有可能失去精度,如:小数强转为整数,则失去精度,小数点之后的值,无法保留。
boolean的取值为true/false,不可与其他类型转换。
示例:
short ss = 123;
byte bb = (byte)ss ;//强制类型转换
System.out.println(bb);//123
double d4 = 123.999;
int in =(int)d4;//数据截断,失去小数精度
System.out.println(i);//123
--------------------------------------------------------------------------
short s =256;
byte b = (byte)s;//强转 s:256→0;s:257→1;
System.out.println(b);//0
/*
short 2个字节 16位
257 0000 0001 0000 0001
byte 1个字节 8位
257 0000 0001[此处截断]0000 0001 结果是1;
256 0000 0001[此处截断]0000 0000 结果是0;
*/
--------------------------------------------------------------------------
short s2 = 128;
byte b2 = (byte)s2;
System.out.println(b2);//-128
/*
short 2个字节 16位
128 0000 0000 1000 0000
byte 1个字节 8位
128 0000 0000 1000 0000 此时首位是1即代表128,又代表负数,因此结果是-128。
*/
----------------------------------------------------------------------------
//字符与整数的转换
char c = 65;
short s3 = 97;
char c2 = (char)s3;//整数强转字符
System.out.println(c2);//c2 = a;
byte b3 = (byte)c2;//字符强转整数
System.out.println(b3);//97
运算符
算数运算符:两个操作数进行计算
+(加、求和);-(减、求差);*(乘、求积);/(除、求商);%(模、求余)
算术运算符:一元运算符(只有一个操作数)
++(递增,变量值+1);--(递减,变量值-1)
注意:单独使用放前后是没有区别的;非单独使用:在变量前,先进行变量自增/自减,再使用变量。
int g =5;
int h = g++; //++g先加再赋值;g++先赋值再加
System.out.println(h);//5
System.out.println(g);//6
赋值运算符:等号右边赋值给等号左边
=(直接赋值);+=(求和后赋值);-=(求差后赋值);*=(求积后赋值);
/=(求商后赋值);%=(求余后赋值)
示例:
int a = 10;
a += 5;//a = a + 5;
System.out.println(a);
int d = 20;
d %=3;
System.out.println(d);//d = d % 3;>>>20/3,求余数,结果为2
关系运算符:两个操作数进行比较
>(大于); <(小于); >= (大于等于); <=(小于等于); ==(等于); !=(不等于)
int a =10;
int b =20;
System.out.println(a>b);//false
boolean bool = a > b;
System.out.println(bool);//false
//--------------------
int c = 10;
int d = 5;
System.out.println(c == d);//false
System.out.println(c != d);//true
逻辑运算符:两个boolean类型的操作数或表达式进行逻辑比较
&&:与(并且);两个操作数,同时为真,结果为真
||:或(或者);两个操作符,有一个为真,结果为真
!:非(取反);意为“不是”,真即是假,假即是真
示例:
boolean a =true;
boolean b =true;
System.out.println(a && b);
boolean c = 10>5;
boolean d = 8<20;
System.out.println(c && d);
//运算符:逻辑与;同时为真,结果为真
double javaScore = 100.0;
double webScore = 98.5;
// true && false
System.out.println(javaScore==100 && webScore==100);//false;两门课程都是满分结果为true
//运算符:逻辑或;有一个为真,结果为真
System.out.println(javaScore==100 || webScore==100);//true;
//运算符:逻辑非
----------------------------------------------------------------------------------------------------------
三元运算符:将判断后的结果赋值给变量
操作符: ? :
语义:布尔表达式?结果1:结果2
描述:当表达式结果为真,获得结果1;当表达式结果为假,获得结果2
示例:
double score = 98.5;
//1.三元运算符可以进行逻辑判断;
System.out.println(score == 100 ? "真棒" : "加油");//加油
//2.三元运算符可以在判断后为变量赋值
String result = score == 100 ? "真棒" :"加油";
System.out.println(result);//加油
//3.赋值,判断,结果为true赋值给变量1,结果为flase赋值给变量2
int i = score ==100.0? 1 : 2;
System.out.println(i);//2
//注意:得到的结果应该跟接收的变量的类型一致。
习题:
//判断b是不是a的因子
int a = 10;
int b = 5;
boolean result = a % b ==0? true : false;
System.out.println(result);
//拆解个位、十位、百位
int n = 123;
int ge = n % 10;
int shi = n / 10 % 10;//先缩小10倍,再对10求余数
int bai = n / 100 ;
System.out.println(ge);
System.out.println(shi);
System.out.println(bai);