「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战」。
基本数据类型变量间转换
除boolean类型外的基本数据类型
自动类型转换
结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
此时的容量大小指的是,表示数的范围的大和小。比如: float容量要大于long的容量
byte 、char、short --> int --> long -->float --> double(当byte、char、 short三种类型的变量做运算时,结果为int型)
byte和byte也要用int
public class DateChange {
public static void main(String[] args){
byte a=3;
int b=100;
//byte c;错误,,应该用int,往大的自动转换,否则编译不通过
int c=a+b;//long 型也可以
float d=a+b;//结果是103.0
short x=100;
double y=100;
double z=x;
System.out.println(z);
char a1='a';
byte p=3;
short x1=100;
int q=a1+a;
//char o1=a1+a;//错误,最小应为int
//char o=p+a;//错误,最小应为int
//char a2=a1+x1;//错误,最小应为int
//short a2=a1+x1;//错误,最小应为int
short a3=x1+p;//byte和short不能是short
}
}
强制类型转换
强制类型转换:自动类型提升运算的逆运算。
1.需要使用强转符:()
2.注意点:强制类型转换,可能导致精度损失。
public class ConstChange {
public static void main(String[] args){
double x=33.3;
//int y=x;C中可以这样直接强制类型转换,但Java中不行
int y=(int)x;//必须进行截断操作
System.out.println(y);
long a=100;
short b=(short)a;
System.out.println(b);
int a1=128;
byte a2=(byte)a1;
System.out.println(a2);//结果是-128,和二进制有关
byte z=10;
//byte z1=z+1;//错误,1是整型常量,默认是int型,不能转换
//float z2=z+12.3;//浮点型常量默认类型是double型,不能转换
}
}
基本数据类型与String间转换
字符串类型String
String类型变量的使用:
1 String属于引用数据类型,翻译为:字符串
2 声明string类型变量时,使用一对""
3 String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
4 运算的结果仍然是string类型
public class StringText {
public static void main(String[] args){
String s1 = "hello world";
System.out.println(s1);
System.out.println("hello world");//"hello world"是一个String类型的常量
String s2="a";
String s3="";
//char a='';//错误,字符串可以空,但字符不行,必须有一个字符
char a=' ';//有一个空格,也算一个字符
int x=1001;
String Y="学号:";
String Y1=Y+x;
System.out.println(Y1);
System.out.println(Y+x);//连接运算,判断是连接还是加法看两遍是否有字符串
boolean z=true;
String Y2=Y1+z;
System.out.println(":"+Y2);
System.out.println("*************************************");
char x1='a';
int b=10;
String c="hello";
System.out.println(x1+b+c);//107hello 注意+号是连接还是加法
System.out.println(x1+c+b);//ahello10 x1未与b相加未转化为数字
System.out.println(x1+(b+c));//ahello10
System.out.println((x1+b)+c);//97hello
System.out.println(c+b+x1);//hello10a
System.out.println("*************************************");
//输出* *
System.out.println("* *");//可以输出正确结果
System.out.println('*'+'\t'+'*');//不行’\t‘与*号相加变成数字 结果93
System.out.println('*'+"\t"+'*');//可以,“”中的\t是转义字符,想要直接输出应”\t“
System.out.println('*'+'\t'+"*");//不行,结果是51*
System.out.println('*'+('\t'+"*"));//可以
//char型加法注意转化成数字,String注意连接
String temp=3.5f+"";//正确,float型连接一个字符串,结果:3.5
}
}
运算符
算术运算符
(还有+(正)、-(负))
| 运算符 | 运算 |
|---|---|
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 取余(取模) |
| ++ | 自增(两种:++a(先运算,后取值),a++(先取值,后运算)) |
| - - | 自减(两种: - -a(先运算,后取值),a- -(先取值,后运算)) |
| + | 连接(字符串) |
public class Count {
public static void main(String[] args){
System.out.println("***************下面是/法*****************");
int num1=3,num2=10;
int result=num2/num1;
System.out.println(result);//结果是3,两个都是整型,结果舍去小数部分
System.out.println(5/2);//结果是2,两个都是整型,结果舍去小数部分
System.out.println(num2/num1*num1);//结果是9,从左往右算
double result1=num2/num1;
System.out.println(result1);//结果是3.0,算完num2/num1后int型转化为double型
double result2=num2/num1+0.0;
System.out.println(result1);//结果是3.0,先乘除,后加减
double result3=num2/(num1+0.0);
System.out.println(result3);//结果是3.3333335
double result4=(double)num2/num1;
System.out.println(result4);//结果是3.3333335
System.out.println("***************下面是%法*****************");
int a1=12,a2=5;
System.out.println(""+a1%a2);//结果是2,取余结果符号与被模数相同(a1)
System.out.println("***************下面是自增自减*****************");
int b1=10,b2=b1++;
System.out.println("b1="+b1+",b2="+b2);//结果是11,10
int b3=++b1;
System.out.println("b1="+b1+",b3="+b3);//结果是12,12,给b2赋值时先取值,后运算b1加了1,之后又++b1
short x=10;
//想要x加1
//x=x+1//错误,1为int型
x=(short)(x+1);
x++;//这两种进行加1
byte y=127;
y++;//y的值为-128,二进制角度考虑
System.out.println("***************下面是练习*****************");
//给出一个整数,打印十位数,个位数,百位数的值
int z=234;
System.out.println("个位数:"+z%100%10+"十位数:"+z%100/10+"百位数:"+z/100);//十位也可z/10%10,个位z%10
}
}