网站首页 > java教程 正文
一、基本数据类型
Java基本类型分四类,整数、浮点数、字符和布尔。其中整数从小到大为byte、short、int、long,浮点数按精度从小到大是float,double,字符为char(String不是基本类型),布尔类型为boolean。
byte,byte占用8位1字节,数量为255,数值范围为-128~127,在虚拟机中这个范围默认创建在常量池中,无论何种整数类型(byte、short、int、long)字面常量创建还是实例对象创建此范围数据引用地址都是同一个。
short,short占用16位2字节,数量为65536,数据范围是-32768~32767之间。
int,int占用32位4字节,数量为2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。在java中字段数字可以用下划线来辅助展示,以便更好阅读,比如数字123456789可表示为1_2345_6789,同理某些情况下在Spring的配置文件属性自动注入的时候,如果遇到属性值类似为1_2345_6789时,可能注入后就变成了123456789,无论是用String还是数值类型接都如此。
long,long占用64位8字节,数量为2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float,float占用32位4字节,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。实际应用中使用Bigdecimal来运算带小数的数字。
double,double占用64位8字节,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。实际应用中使用Bigdecimal来运算带小数的数字。
boolean,boolean占用1位,只有true和false两个取值。
char,占用16位2字节,存储Unicode码,用单引号赋值,注意Unicode之外的汉字可能需要多个char。
包装类型,byte对应Byte,short对应Short,int对应Integer,long对应Long,float对应Float,double对应Double,boolean对应Boolean,char对应
Character。包装类型可自动装填,但在高并发情况下使用包装类会影响性能。
类型自动转换,基本规则是低位可自动向高位转换,但高位不能自动向低位转换,需要强制转换。
浮点数运算,由于float和double是低精度计算,实际计算中可能会算出非预期的结果,比如0.05+0.01,预期结果应该是0.06,然而往往会计算出另外一个结果0.060000000000000005。所以需要使用高精度的Bigdecimal,Bigdecimal有对应的加(add)减(subtract)乘(multiply)除(divide),但需要注意的是在使用除的时候要指定小数位,不然会报错。
String,String不是基本类型,但却是同基本类型一样广泛使用。String是不可变的,每一次拼接都会创建一个新的对象,底层是char数组。高并发下,应该使用StringBuilder或者StringBuffer来进行字符串拼接。其中,多线程环境下要用StringBuffer,单线程使用StringBuilder,效率从大到小为StringBuilder>StringBuffer>String拼接。
枚举,枚举使用得当也可以是一大利器,比如使用枚举来做单例就是一种比较好的实现。其它如字典类型也是其常用场景,开发时可以极大遍历开发和维护。
二、运算符
JAVA运算符按结果类型分为算术运算符、关系运算符、位运算符、逻辑运算符、赋值运算符和其他运算符。
算术运算符主要有加(+)、减(-)、乘(*)、除(/)、取模(%)、自增(++)、自减(--)。加减乘除没什么好说的,但要注意JAVA中数值超限问题,比如byte=127,然后byte=byte+1,按理说结果应该是128,但byte的取值范围最大为127,所以最终结果是-128而不是128。取模也叫取余,可以用来做数据分库根据主键进行取余然后确定存储位置。自增自减需要注意的位置的左右之分,比如i++和++i,符号在右边,表示先返回后自增,符号在左边,表示先自增再返回,比如i=1;i++结果是1,而++i结果是2。
关系运算符主要有==、!=、>、<、>=、<=,常用作数值的大小比较,但其中==号还可以用来比较两个引用对象的地址是否相同。
位运算符主要有与&、或|、异或^、按位取反~、左移<<、右移>>、按位右移补零>>>。位运算通常在实际开发中很少用到,大多在面试中会被问到,频率最高的是左移和右移,左移1位相当于乘以2,右移以为相当于除以2。另外,一个数与另一个数异或两次是其本身, 一个数和自身异或结果是0。
逻辑运算符主要有&&、&、||、|,在判断中经常会用到这些符号,&&和||都有短路的功能,相比&和|效率要高。
赋值运算符主要有=、+=、-=、/=、%=、<<=、>>=、&=、^=、|=,其中a+=b等价于a=a+b,同理后面a&=b等价于a=a&b。
其它运算符主要有三元运算符、instanceof运算符。条件运算符形如expression?a:b;也是一种常见的运算符。instanceof运算符判断一个实例是否是一个class的实例,在反射中经常用到。
运算符的优先级遵循正常数学中的优先级,即先乘除后加减。
- 上一篇: Java中如何用简单的数字描述更多的信息
- 下一篇: Java数组数据的操作之检查日期格式是否正确
猜你喜欢
- 2024-10-29 Java高级程序员(5年左右)面试题目集
- 2024-10-29 Java编程实现数字签名(java签名验签的做法)
- 2024-10-29 Java数组中重复的数字(java数组重组)
- 2024-10-29 Java控制台猜数字游戏(javaweb猜数字游戏)
- 2024-10-29 如何基于Java解析国密数字证书(java 国密算法库)
- 2024-10-29 Java修炼终极指南:22. 简要介绍Java中的(无)符号整数
- 2024-10-29 Java 枚举获取值和数字下标(java枚举类根据key获取value)
- 2024-10-29 关于数字的对齐原来这么简单(excel中数字的对齐方式)
- 2024-10-29 一文带你搞懂Java异常(java异常简单理解)
- 2024-10-29 入门java打卡第五天——number&math类
你 发表评论:
欢迎- 07-15采用Oracle OSB总线进行服务注册和接入
- 07-15javaEE 新闻管理系统 oracle11+tomcat6
- 07-15从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 07-15如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 07-15【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 07-15【mykit-data】 数据库同步工具(数据库表同步工具)
- 07-15[Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- 07-15Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- 最近发表
-
- 采用Oracle OSB总线进行服务注册和接入
- javaEE 新闻管理系统 oracle11+tomcat6
- 从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 【mykit-data】 数据库同步工具(数据库表同步工具)
- [Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- Oracle数据库云服务系列新增前所未有的企业级功能
- 直播预告丨如何实现Oracle存储过程到java的一键转化
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)