Java 基本数据类型(内置数据类型)和引用类型

目录

一. 为什么定义不同类型的变量:

二. 基本数据类型(内置数据类型):

三. 引用数据类型:

四. 一个示例辨析(值传递和引用传递):

1. 值传递: 

2. 引用传递:

3. 特例 String类 


一. 为什么定义不同类型的变量:

在创建变量时,内存管理系统会根据变量类型的不同为变量分配不同大小的内存空间。

二. 基本数据类型(内置数据类型):

1. 共八种基本类型。其中六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

2. 基本数据类型是CPU可以直接进行运算的类型

 

基本数据类型
基本数据类型位数(bit)默认值说明
byte80整数
short160整数
int320整数
long640L(L不分大小写)整数
float320.0f单精度浮点数
double640.0d双精度浮点数
boolean1false
char16‘u0000’Unicode字符

三. 引用数据类型:

1. 类似于C语言中的指针,引用类型的变量又叫引用变量,它内部存储的是一个地址,该地址指向某个对象在内存中的位置。

2. 常见的引用变量类型:数组、String和其它对象

3. 默认值:null

四. 一个示例辨析(值传递和引用传递):

1. 值传递: 

// 基本类型值传递示例
    public static void main(String[] args) {
		int a = 10;
		int b = 20;
		System.out.println("a is: " + a);
		System.out.println("b is: " + b);
		change(a, b);
		System.out.println("After change: ");
		System.out.println("a is: " + a);
		System.out.println("b is: " + b);
	}
	public static void change(int a, int b) {    
        //这里操作的其实是 a,b 的副本 num1,num2 ,而不是 a,b 本身
		a = 30;
		b = 40;
		System.out.println("In change function: ");
		System.out.println("a is: " + num1);
		System.out.println("b is: " + num2);
	}

输出结果:

a is: 10
b is: 20
In change function: 
a is: 30
b is: 40
After change: 
a is: 10
b is: 20

 2. 引用传递:

    public static void main(String[] args) {
		int[] arr = {1, 2, 3};
		System.out.println("arr[0]: " + arr[0]);
		change(arr);
		System.out.println("After change: ");
		System.out.println("arr[0]: " + arr[0]);

	}
	
	public static void change(int[] arr) {
		arr[0] = 0;
		System.out.println("In change function: ");
		System.out.println("arr[0]: " + arr[0]);
	}

输出结果:

arr[0]: 1
In change function: 
arr[0]: 0
After change: 
arr[0]: 0

3. 特例 String类 

public static void main(String[] args) {		
		String s1 = "hello";
		String s2 = " world";
		System.out.println(s1 + s2);
		change(s1, s2);
		System.out.println("After change: ");
		System.out.println(s1 + s2);
	}
	
	public static void change(String s1, String s2) {
		s1 = "你好";
		s2 = "世界";
		System.out.println("In change function: ");
		System.out.println(s1 + s2);
	}

 输出结果:

hello world
In change function: 
你好世界
After change: 
hello world

String类型作为参数传递时,是一个看上去为值传递的引用传递。

原因:

The String class represents character strings. All string literals in Java programs, such as "abc", are implemented as instances of this class.

Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared. For example:

                String str = "abc";

is equivalent to:

                char data[] = {'a', 'b', 'c'};

                String str = new String(data);

大概意思是:

String类型的值在创建后即不可修改,任何对String类型对象的改变都相当于,创建一个含有修改后内容的新对象,并将新对象的地址赋值给原引用变量(在上面的例子中是 str )

相关链接:

Java变量和数据类型 廖雪峰

Java数据类型 菜鸟教程

String类官方文档

Java中值传递和引用传递的三种情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值