java基础学习之java中基础类型和引用类型的区别及举例
java中的数据类型
主要分为两大类:基本数据类型和引用数据类型
基本数据类型
包括数值型,字符型和布尔型。
数值型:
(1)整型:byte 1个字节;short 2个字节;int 4个字节;long 8个字节。
(2)浮点型:float 占4个字节;double占8个字节;可以采用十进制和十六 进制两种表示方式,其中十六进制表示方法只能采用科学计数法,例如:0x1.2p3,表示的是的是1乘以16加上2乘以16的-1次方的和乘以2的三次方;浮点型的默认类型为DOUBLE型,如果声明float型浮点数,要在数值后面加上f或F,例如:floatf1 = 3.14F;否则会报精度错误。
字符型:char 采用unicod的16位编码方式进行编码。
布尔型:true,false;
引用数据类型:类、接口类型、数组类型、枚举类型、注解类型;
基本数据类型和引用数据类型的区别主要在存储方式上:
基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上;
引用数据类型在被床架时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。
例如:我有一个类MyDate,其中有属性day,mouth,year等,有构造方法(带参数);
现在为其创建一个对象MyDate d1 = new
MyDate(8,8,2008);
在内存中的具体创建过程是:
1)首先在栈内存中位其d1分配一块空间;
2)然后在堆内存中为MyDate对象分配一块空间,并为其三个属性设初值0,0,0;
3)根据类MyDate中对属性的定义,为该对象的三个属性进行赋值操作;
4)调用构造方法,为三个属性赋值为8,8,2008;(注意这个时候d1与MyDate对象之间还没有建立联系)
5)将MyDate对象在堆内存中的地址,赋值给栈中的d1;通过句柄d1可以找到堆中对象的具体信息。
例如:
class ArgsDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b); //a:10,b:20
change(a,b);
System.out.println("a:"+a+",b:"+b); // a:10,b:20
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]); // 4
}
public static void change(int a,int b) { //a=10,b=20
System.out.println("a:"+a+",b:"+b); //a:10,b:20
a = b; //a=20
b = a + b; //b=40
System.out.println("a:"+a+",b:"+b); //a:20,b:40
}
public static void change(int[] arr) { //arr={1,2,3,4,5};
for(int x=0; x<arr.length; x++) {
if(arr[x]%2==0) {
arr[x]*=2;
}
}
//arr={1,4,3,8,5};
}
}
各处输出结果见程序中注释,程序来源刘意老师java基础班。
上一篇: openssl使用教程(一)
下一篇: Linux C语言内联汇编-读写变量
推荐阅读
-
Java基础学习-基本数据类型变量的定义和使用
-
Java中构造方法、空指针异常现象、基本数据类型和引用数据类型作为参数传递的区别
-
Java学习——基础知识之标识符、数据类型和类型转换
-
菜鸟学JAVA之——String及 基础数据类型的对象类型
-
Java中的一些变量、数据类型和运算符_java基础语法
-
从零开始的java学习Day11----------基础篇(Java中的双列集合、泛型、可变类型)
-
JAVA基础:常混淆的两种类型(基本数据和引用数据)
-
Java中构造方法、空指针异常现象、基本数据类型和引用数据类型作为参数传递的区别
-
JAVA基础:常混淆的两种类型(基本数据和引用数据)
-
Java中的一些变量、数据类型和运算符_java基础语法