Java基本数据类型和运算符详解
本文实例讲述了Java基本数据类型和运算符。分享给大家供大家参考,具体如下:
基本数据类型
Java是一种强类型的语言,声明变量时必须指明数据类型。变量(variable)的值占据一定的内存空间。不同类型的变量占据不同的大小。
Java中共有8种基本数据类型,包括4种整型、2种浮点型、1种字符型、1种布尔型,请见下表。
Java基本数据类型
Java中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上, Java中还存在另外一种基本类型void,它也有对应的包装类java.lang.Void,不过我们无法直接对它们进行操作。对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。请看下面的例子:
publicclassPrimitiveTypeTest{
publicstaticvoidmain(String[]args){
//byte
System.out.println("基本类型:byte二进制位数:"+Byte.SIZE);
System.out.println("包装类:java.lang.Byte");
System.out.println("最小值:Byte.MIN_VALUE="+Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE="+Byte.MAX_VALUE);
System.out.println();
//short
System.out.println("基本类型:short二进制位数:"+Short.SIZE);
System.out.println("包装类:java.lang.Short");
System.out.println("最小值:Short.MIN_VALUE="+Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE="+Short.MAX_VALUE);
System.out.println();
//int
System.out.println("基本类型:int二进制位数:"+Integer.SIZE);
System.out.println("包装类:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE="+Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE="+Integer.MAX_VALUE);
System.out.println();
//long
System.out.println("基本类型:long二进制位数:"+Long.SIZE);
System.out.println("包装类:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE="+Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE="+Long.MAX_VALUE);
System.out.println();
//float
System.out.println("基本类型:float二进制位数:"+Float.SIZE);
System.out.println("包装类:java.lang.Float");
System.out.println("最小值:Float.MIN_VALUE="+Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE="+Float.MAX_VALUE);
System.out.println();
//double
System.out.println("基本类型:double二进制位数:"+Double.SIZE);
System.out.println("包装类:java.lang.Double");
System.out.println("最小值:Double.MIN_VALUE="+Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE="+Double.MAX_VALUE);
System.out.println();
//char
System.out.println("基本类型:char二进制位数:"+Character.SIZE);
System.out.println("包装类:java.lang.Character");
//以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="
+(int)Character.MIN_VALUE);
//以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="
+(int)Character.MAX_VALUE);
}
}
整数型
整数型包括byte、short、int和long。
publicclassDemo1{
publicstaticvoidmain(String[]args){
//字面值默认是int类型
byten1=12;
shortn2=45;
intn3=456;
longn4=67L;//L或l
}
}
二进制太长可以使用下划线来进行区分
publicclassDemo1{
publicstaticvoidmain(String[]args){
intn5=0B1010_1111_0011_1100;//二进制用0B或0b表示 intn6=017;//八进制用0表示
intn7=0xffff;//十六进制用0x或0X表示
longn8=12345678987654321L;
}
}
浮点型
浮点型包括double和float。
注意:1.不要在数量级相差很大的浮点类型之间进行运算。2.避免进行等量的判断
importjava.math.*;
publicclassDemo1{
publicstaticvoidmain(String[]args){
floatf1=34.5f;//f或F默认为double类型
doubled1=456.78d;//后缀d或D
doubled2=2.4e20;//e或E以10为底
//浮点型可以表示十六进制,但是必须以科学
//计数法表示,而且以p为底
doubled3=0x3.4p20;//p或P以2
doubled4=2.4e20;
doubled5=d4+1;
doublenum1=0.1;
doublenum2=0.2;
doublenum3=num1+num2;//0.3
//java.lang
System.out.println(num3==0.3);//不一样输出结果false
System.out.println(num3);//输出结果0.30000000000000004
//处理java.math包
BigDecimalnumber1=newBigDecimal("0.1");
BigDecimalnumber2=newBigDecimal("0.2");
System.out.println(number1.add(number2));//输出结果0.3
}
}
字符型
char类型
- char类型是一个单一的16位Unicode字符;
- 最小值是 \u0000(即为0);
- 最大值是 \uffff(即为65,535);
- char数据类型可以储存任何字符;
- 例子:charletter='A';。
只能存储一个字符,只能使用单引号
布尔型
布尔(boolean)型包括true和false
引用数据类型
String
publicclassDemo2{
publicstaticvoidmain(String[]args){
Stringname="郭靖";
Stringaddress="北京";
//+连接字符串
System.out.println(name+address);
intn1=1;
intn2=1;
System.out.println(n1+n2);//输出结果:2
//2+"郭靖"-》“2郭靖”
System.out.println(n1+n2+name);//输出结果:2郭靖
//"郭靖1"+n2->"郭靖11“
System.out.println(name+n1+n2);//输出结果:郭靖11
}
}
基本数据类型转换
自动类型转换
小-》大
低-》高
强制类型转换
大-》小
高-》低
语法格式为:(强制转换的数据类型)操作数
intnum=(int)45.67;
类型提升原则
前提:运算
结果:采取高类型(范围大的数据类型作为结果)
运算符
分类:根据操作数的个数
一元
二元
三元
算数运算符
publicclassDemo5{
publicstaticvoidmain(String[]args){
System.out.println(5+2);//输出结果:7
System.out.println(5-2);//输出结果:3
System.out.println(5*2);//输出结果:10
//------------除法--------------------------
//除数和被除数都是整数结果会取整数部分
System.out.println(5/2);////输出结果:2
System.out.println(5.0/2);//输出结果:2.5
System.out.println(5/2.0);//输出结果:2.5
System.out.println(5.0/2.0);//输出结果:2.5
//除数为0抛出异常
//System.out.println(5/0);
System.out.println(5.0/0);//正无穷大输出结果:Infinity
System.out.println(-5.0/0);//负无穷大输出结果:-Infinity
//非数字NaN
System.out.println(0.0/0);//输出结果:NaN
//-----------------取余数,取模----------------------------
System.out.println(5%2);//输出结果:1
System.out.println(5.0%2);//输出结果:1.0
System.out.println(5%-2);//输出结果:1
System.out.println(-5%2);//输出结果:-1,符号看被除数
//---------------习题讲解--------------------------------
/*根据天数(46)计算周数和剩余的天数*/
intdays=46;
intweek=days/7;//周
intday=days%7;//余数天
System.out.println(week+"周,余数"+day+"天");
//----------------------------------------------
/*
对于随意输入的一个3位数,
反转;例如:234反转后
(将每一个数字反转输出即可):432
*/
intnum=234;
intn1,n2,n3;
n1=num%10;//个位
n2=num/10%10;//十位
n3=num/100;//百位
System.out.println(n1+""+n2+""+n3);//"432"
System.out.println(n1*100+n2*10+n3);//432
}
}
关系运算符
逻辑运算符
&&||短路与和短路或
位运算符
&|非短路与和非短路或
5二进制00000000-00000000-00000000-00000101 2二进制00000000-00000000-00000000-00000010 //&如果相对应位都是1,则结果为1,否则为0 5&2二进制00000000-00000000-00000000-00000000 //|如果相对应位都是0,则结果为0,否则为1 5|2二进制00000000-00000000-00000000-00000111 //^如果相对应位值相同,则结果为0,否则为1 5^2二进制00000000-00000000-00000000-00000000 //~按位补运算符翻转操作数的每一位,即0变成1,1变成0。 ~5二进制11111111-11111111-11111111-11111010 减一11111111-11111111-11111111-11111001 取反00000000-00000000-00000000-00000110 //<<向左移动几位,右边低端位用0补全 5<<2二进制00000000-00000000-00000000-00010100 //>>向右移动几位,左边高位是什么用什么补位,是1用1,是0用0 5>>2二进制00000000-00000000-00000000-00000001 //>>>无符号右移,左边高位全部用0进行补位 5>>>2二进制00000000-00000000-00000000-00000001 -6>>>2二进制00111111-11111111-11111111-11111110
扩展赋值运算符
条件运算符
语法:
比较运算||Boolean?表达式1:表达式2
如果?前的结果是true返回表达式1,如果?前返回false返回表达式2
运算符的优先级
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。