Java基础

251 阅读4分钟

「这是我参与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
     }
 }