系列文章目录

java基础之java类型



文章目录

  • 系列文章目录
  • 基本类型
  • 自动类型提升
  • 引用类型




基本类型

整型

Byte 	8位	 	-2^7~2^7-1		默认值0
Short	16位	-2^15~2^15-1	默认值0
Int		32位	-2^31~2^31-1	默认值0
long		64位	-2^63~2^63-1	默认值0L
(一般整型默认为int)

浮点型

Float	单精度		32位	默认值0.0f
double	双精度		64位	默认值0.0d
(一般浮点型默认为double)

布尔类型

Boolean		只有两个取值,true和false,默认为false

Char类型

Char     16位   是一个单一的Unicode字符最小值为0,最大值为65535。java中一个中文占两个字节,char可以存储一个中文汉字

自动类型提升

小的类型与大的类型进行计算,得到的是大的类型数据,例如:

byte a=1; int b=1; int c=a+b;
 double a=1; int b=1; double c=a+b;


小的类型转换成大的类型可以自动转换,反之需要强制转换(会缺失精度),例如:

byte a=1; int b=a;
 int a=1; byte b=(byte)a;

引用类型

#Java包装类型

Byte、Short、Integer、Long、Float、Double、Character、Boolean

#将包装类转化为其它类型

Integer i=86;i.doubleValue();i.floatValue();
手动装箱与手动拆箱:
double a=9.4; Double b=new Double(a); double c=b.doubleValue();
Java1.5后引入自动装箱与自动拆箱:
double a=9.4; Double b=a; double c=b;

#将字符串转为基本类型的包装类

String str=”8”;
Integer i=Integer.parseInt(str);
Integer j=Integer.valueOf(str);

#Date类型

获取当前时间:Date now=new Date();
日期格式转换:
String formatGeShi=“yyyy-MM-dd HH:mm:ss”
SimpleDateFormat sdf=new  SimpleDateFormat(formatGeShi);        
String nowDate=sdf.  Format(now);
Date date=sdf.parse(nowDate);

#Calendar类型

该类是一个抽象类,可以通过调用getInstance()静态方法来获取一个Calendar对象。
Calendar c=Calendar.getInstance();
用Calendar获取时间:
获取年:Int year=c.get(Calendar.year);以此类推
Calendar转化为Date类型:
Date now=c.getTime();
获取当前毫秒数:
Long time=c.getTimeInMillis();
当前时间加减:
加一个月:c.add(Calender.MONTH,1);以此类推

#Math类型

Double a=5.55;
Long b=Math.round(a); b=6;//四舍五入
Double c=Math.floor(a);c=5.00//舍一取整
Double d=Math.ceil(a);d=6.00//进一取整
Double e=Math.random();//获取[0-1)之间的随机浮点数

#字符串

在java中,字符串被作为String类型处理,位于java.lang包下面。String类型是final类修饰的,不可变的,所谓的修改只是创建了新的对象,所指向的空间是不同的。

#转化为String类型的三种方法

使用toString()方法;使用String类型的ValueOf()方法;加上一个空字符串。

#在字符串中“==”和equals()的区别

==判断的是两个字符串地址是否相等,equals判断的是两个对象的内容是否相同。但是在比较两个对象的时候,若不重写equals方法,那么这两种比较的都是对象的地址是否相等。

#StringBuilder与StringBuffer类

创建一个可变的字符串的时候,我们应该考虑StringBuilder和StringBuffe,频繁使用String创建对象会造成内存的浪费。
StringBuilder是线程不安全的,而StringBuffer是线程安全的,所以StringBuilder的效率比较高。

#bigDecimal

String 转 bigDecimal:
String a="1231";
BigDecimal Big=new BigDecimal(a);
Big.add(BigDecima bg);//加
Big.subtract(BigDecima bg);//减
Big.multiply(BigDecima bg);//乘
Big.divide(BigDecima bg);//除
Big.pow(BigDecima bg);//乘方
Big.abs();//取绝对值
Big.negate();//取反
Big.compareTo(BigDecima bg);//忽略精度比较,返回值int类型
Big.equals(BigDecima bg);//精确比较,返回值为boolean
Big.setScale(int);//设置小数点精度
Big.setScale(int,int);//添加小数点精度并保留方式
例如:a=a.setScale(3,java.math.BigDecimal.ROUND_HALF_UP)将a的值保留3位精度

#CharSequence(String实现的接口)

String实现CharSequence,StringBuffer和StringBuilder也实现了 CharSequence接口,CharSequence就是字符序列,String, StringBuilder和StringBuffer本质上都是通过字符数组实现的,
CharSequence 是 char 值的一个可读序列。此接口对许多不同种类的 char 序列提供统一的只读访问