本文共 3015 字,大约阅读时间需要 10 分钟。
原文链接:https://blog.csdn.net/qq_31071255/article/details/82192075
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。 Java中有两大类型Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
Java是一个面向对象的编程语言,但是Java中的八种基本数据类型却是不面向对象的,为了使用方便和解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类(Wrapper Class),包装类均位于java.lang包。
byte->Byte short->Short; int->Integer; long->Long; double->Double; float->Float; char->Charecter; boolean->Boolean; 如果要查看基本类型的范围大小,可用包装类里的Max_Value Min_Value函数获得其边缘值,例如:System.out.println(Byte.Max_value);补充:包装类的自动拆箱和装箱,首先解释一下概念,自动拆箱就是把包装类型自动拆为基本类型,自动装箱就是把基本类型自动包装为包装类型,例如:
1.Integer integer=10; 2.int j=integer; 前者就是自动装箱,后者就是自动拆箱。本质上Integer integer=99;java虚拟机编译之后,系统执行的是Integer integer=Integer.valueOf(99); int j=integer; 系统为我们执行的代码是: int j=integer.valueOf(); 这里重点强调一下Integer.valueOf(i),这个函数,当i值在-128~127之间时,不会创建新的对象,但当i值超出这个范围就会新建一个对像,可以用这个来判断,例如, Integer i1=100; Integer i2=100; Integer i3=200; Integer i4=200; 输出i1i2;i3i4;可知,前者为true,后者为false。接下来再测试一下,当 Integer i1=300; int i2=300; 输出i1i2;时,结果为true,这是因为,Integer会自动拆箱为int类型,而基本类型比较内容在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。
引用类型包括类、接口、数组,装箱值类型 例子: String a=new String(“adfaf”); Collection b=new ArrayList(); String[] c=new String[]{}; Integer d=new Integer(46); 这些都为引用类型。首先介绍一下java内存中有哪些空间:可以粗浅的分为栈空间,堆空间,和方法区,
栈区:
1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中 2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。 3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。堆区:
1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。