java基础学习笔记——数据默认值

趁考试的契机,学习一下java基础,仅记录自己不太熟悉的知识点。
2019/07/13

数字类型的成员,默认值是0,布尔型为false,对象引用缺省值为null。
各种类型的默认值:

public class Test {
	boolean test_boolean;
	byte test_byte;
	char test_char;
	short test_short;
	int test_int;
	long test_long;
	float test_float;
	double test_double;
	String test_String;

	public static void main(String[] args) {
		Test test = new Test();
		System.out.println("default value of boolean: " + test.test_boolean);
		System.out.println("default value of byte: " + test.test_byte);
		System.out.println("default value of char: " + test.test_char);
		System.out.println("default value of short: " + test.test_short);
		System.out.println("default value of int: " + test.test_int);
		System.out.println("default value of long: " + test.test_long);
		System.out.println("default value of float: " + test.test_float);
		System.out.println("default value of double: " + test.test_double);
		System.out.println("default value of string: " + test.test_String);
	}
}

输出:
在这里插入图片描述
比较奇怪的是:
char类型的默认值输出居然是这个方形。这是啥意思呢?
其实方形表示的就是不可打印字符。不仅是0,只要是不可以打印字符,输出都是方形。
其实char类型就是一个两个字节的变量,其中存储着unicode编码。用’\uxxxx’这种方法,只是告诉编译器按照16进制去解析,最终输出的符号,是编译器按照unicode编码表解析得到的。

public class Test2 {
	char test_char = '你';
	char test_char2 = '\u4f60';
	char test_char3 = 20320;
	char test_char4 = 0x4f60;
	char test_char5 = 1;

	public static void main(String[] args) {
		Test2 test = new Test2();
		System.out.println("test_char: " + test.test_char);
		System.out.println("char->int: " + (int) test.test_char);
		System.out.printf("char->int(hex): %x\n", (int) test.test_char);

		System.out.println("test_char2: " + test.test_char2);
		System.out.println("test_char3: " + test.test_char3);
		System.out.println("test_char4: " + test.test_char4);
		System.out.println("test_char5: " + test.test_char5);
	}
}

输出:

test_char: 你
char->int: 20320
char->int(hex): 4f60
test_char2: 你
test_char3: 你
test_char4: 你
test_char5: 

局部变量没有默认值

局部变量在使用之前必须显示赋值才能使用,否则会有编译错误。由于局部变量使用的是栈内存,主要出于效率的考虑,虚拟机不能为栈上的变量设置默认值,所以局部变量需要显式的赋初值。
除局部变量以外的所有变量都是使用堆内存,现代的机器可以很方便,快速的使大块内存初始化为相同的值,这个特性使得堆内存中的变量都可以由虚拟机赋初值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值