基本数据类型
分类和转化
基本数据类型包含8个类型
不同的基本数据类型之间可以进行转换:
- 隐式转换:
小范围—>大范围(可以直接转换) - 显示转换:
大范围—>小范围(强制转换)
//隐式转换
//在定义值的时候,不能超过该数据类型的长度,如果超过了,那么它就会直接报错,编译无法通过
byte a=124;
int b=1;//一半情况整形都使用int
b=a;
System.out.println("隐式转换:"+b);
//显示转换
byte c=124;
int d=1;
//强转,通过在需要转换的字段前加上(对应需要转换类型)
c=(byte)d;
System.out.println("显示转换:"+c);
//int值大于byte范围
int e=200;
//强转,通过在需要转换的字段前加上(对应需要转换类型)
c=(byte)e;
System.out.println("int值大于byte范围:"+c);
//小数默认是double类型,古人要将1.0复制给float类型:
//强制转换
//添加f或者F
//float f1=1.0;是错误的
float f1=1.0f;
float f2=(float)1.0;
System.out.println("float:"+f1);
//小数默认为double类型,使用d或D可以显示表示该小数是double类型
double d1=1.0;
double d2=1.01d;
System.out.println("double:"+d1);
//布尔值类型
//默认false
boolean testFlag=false;
//boolean只有两个值,true和false
//可以判断表达式,将表达式结果作为赋值内容
boolean testFlag2=true;
boolean testFlag3=(1==1);
输出结果:
注意:
- 数值类型和Boolean类型之间不能转换(强转也不行,会出现编译错误提示)
- char类型可以使用‘’单引号字符赋值,也可以使用非负整数进行赋值
- char占两个字节,表示一个字符;英文字母占一个字节,中文占两个字节,但是char只能存放一个字母或一个汉字(
char a='ab',//编译错误
) - 小数默认是double类型,如果要将1.0赋值给float类型,可以强转或在后面添加f/F
- 布尔类型默认为false,可以将表达式的结果作为赋值内容
比较运算
- float和double的比较:
//测试
//比较的为整数
System.out.println("------------");
double d1=1.0d;
float f1=1.0f;
System.out.println("d1==f1:"+(d1==f1));
System.out.println("d1!=f1:"+(d1!=f1));
System.out.println("d1>f1:"+(d1>f1));
System.out.println("d1<f1:"+(d1<f1));
//比较的为小数
System.out.println("------------");
double d2=0.1d;
float f2=0.1f;
System.out.println("d2==f2:"+(d2==f2));
System.out.println("d2!=f2:"+(d2!=f2));
System.out.println("d2>f2:"+(d2>f2));
System.out.println("d2<f2:"+(d2<f2));
输出结果:
解:
当定义的两个变量float和double都是整数时,后面小数位都是0——那么在进行判断时两边是相等的(因为没有小数位,会把这两个值当整数来处理)
当定义的两个变量是小数时,小数位不为0,那么float和double就算值一样也不会对等(需要考虑数据的范围)
- String之间的比较:
//基本数据类型和引用数据类型
//声明两个引用类型的变量s1和s2,并使用new赋值
System.out.println("-----引用类型-------");
String s1=new String("Hello");//通过new创建的字符串回在堆里开辟一个新的空间
String s2=new String("Hello");
String s3="Hello";//直接通过=赋值,s3s4指向同一个堆的内容,可以直接比较
String s4="Hello";
//使用==和!=比较s1和s2的地址
System.out.println("s1==s2"+(s1==s2));
System.out.println("s1==s3"+(s1==s3));
System.out.println("s3==s4"+(s3==s4));
System.out.println("s3==s4"+s3.equals(s4));//比较内容,一般字符串用
System.out.println("s1==s2"+s1.equals(s2));
输出结果:
- a++和++a的区别:
//运算
int num1=1;
int num2=2;
int sum=0;//赋初始值
sum=num1+num2;
System.out.println("-----------------");
//加法
num1=num1+num2;//等号后面重新赋值,将num1+num2的结果赋值给num1
num1+=num2;//将左边的值重新赋值,赋值结果为左边加上右边的结果集
//先运算,再自增
num1++;
System.out.println("直接输出num1++:"+(num1++));//先输出,再运算
System.out.println("num1++之后:"+num1);
//先自增,再运算
++num1;
System.out.println("直接输出++num1:"+(++num1));//先运算,再输出
System.out.println("++num1之后:"+num1);
输出结果:
- 常见运算符:
赋值:=int a=1;
算数运算 +, - ,*, / ,%(除余) , ++, –
比较:== != > < >= <= (返回boolean类型true/false)
逻辑符号 :&& 、 || 、!
条件运算符(三元运算符):表达式1?表达式2:表达式3;
复合赋值运算 += , -= , *= , /= , %=
条件运算符:
//除法
System.out.println("----------------");
int x=101;
int y=x/10;//除法
System.out.println(y);
int z=x%10;//除余
System.out.println(z);
int g=x>y?x+y:2;
System.out.println(g);
输出结果:
解:
判断表达式的值,true返回?前内容,false返回?后内容
控制台输出对象Scanner:
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个整数:");
int inputNum=sc.nextInt();
System.out.println("值:"+inputNum);