您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
javase第二季学习笔记-基础数据类型包装类
发布时间:2017-07-10 14:38:57编辑:雪饮阅读()
在java中有一个设计的原则“一切皆对象”,java中的基本数据类型就完全不符合这种设计思想,因为八种基本数据类型并不是引用数据类型,所以java中为了解决这样的问题,jdk1.5后引入了八种基本数据类型的包装类。
将一根基本数据类型转换为包装类,那么这样的 操作称为装箱操作。将一个包装类转换为一个基本数据类型,这样的操作称为拆箱操作。
下面是拆箱时自动执行的方法
示例:
public class NewKeywordDemo
{
public static void main(String[] args){
//创建包装类对象
Long x1=new Long(100);
long x2=100L;
//可以通过创建包装类对象的方式定义一个变量,而平时对于基础类型数据都是直接定义的
//所以也可以如下这样定义
//如下是创建包装类对象的简写也叫做装箱
Long x3=100L;
}
}
转型操作
在包装类中,可以将一个字符串变为指定的基本数据类型,一般在输入数据时会使用较多。
在Integer类中将String变为int型数据:public static int parseInt(String s)
在Float类中将String变为float型数据:public static float parseFloat(String s)
转型示例:
public class NewKeywordDemo
{
public static void main(String[] args){
String s1="220807";
//字符串转换为int类型的前提是该字符串本身就是数字
//把一个字符串转换为基本数据类型
int x6=Integer.parseInt(s1);
System.out.println(x6);
//valueOf内部也是调用parseInt进行转换的
//所以这两种将字符串转换为基础数据类型的方法都是可行
//如果要进行计算,则使用parseInt
//如果要作为对象进行传的话就用valueOf
Integer x7=Integer.valueOf(s1);
System.out.println("x7:"+x7);
}
}
Inter类直接赋值与new的区别:
public class NewKeywordDemo
{
public static void main(String[] args){
Integer x8=new Integer(10);
Integer x9=new Integer(10);
Integer x10=10;
Integer x11=10;
Integer x12=1000;
Integer x13=1000;
//返回false,因为是new出的两个实例,产生两个堆内存地址的引用
System.out.println(x8==x9);
//返回是false,因为一个是值引用,一个对象引用
System.out.println(x8==x10);
//返回true,因为两者都是值引用
System.out.println(x10==x11);
/*
返回false,因为两者虽然都是值引用,但是由于该值已经超过1字节(-128-127)
如果值的范围在-128-127范围内则值直接存储于常量池中,否则将会new出一个对象实例
这样以来两个虽然都是1000,但是却是两个对象地址的引用
*/
System.out.println(x12==x13);
}
}
享元设计模式:
它使用共享对象,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似对象;它适合用于大量对象只是重复因而导致无法令人接受的使用大量内存。通常对象中部分状态是可以分享。常见做法是把它们放置外部数据结构,当需要使用时再将它们传递给享元。
运用共享技术有效的支持大量细粒度的对象。
例如上面的Integer在-128-127范围内将值存储于常量池,超过该范围则直接new对象这种设计模式就是享元设计模式。
另外byte,short,long integer也都是使用了享元设计模式。
关键字词:javase,基础数据类型包装类