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

小灰灰 2021-12-13 02:13 237阅读 0赞

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

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

  1. public class Test {
  2. boolean test_boolean;
  3. byte test_byte;
  4. char test_char;
  5. short test_short;
  6. int test_int;
  7. long test_long;
  8. float test_float;
  9. double test_double;
  10. String test_String;
  11. public static void main(String[] args) {
  12. Test test = new Test();
  13. System.out.println("default value of boolean: " + test.test_boolean);
  14. System.out.println("default value of byte: " + test.test_byte);
  15. System.out.println("default value of char: " + test.test_char);
  16. System.out.println("default value of short: " + test.test_short);
  17. System.out.println("default value of int: " + test.test_int);
  18. System.out.println("default value of long: " + test.test_long);
  19. System.out.println("default value of float: " + test.test_float);
  20. System.out.println("default value of double: " + test.test_double);
  21. System.out.println("default value of string: " + test.test_String);
  22. }
  23. }

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

  1. public class Test2 {
  2. char test_char = '你';
  3. char test_char2 = '\u4f60';
  4. char test_char3 = 20320;
  5. char test_char4 = 0x4f60;
  6. char test_char5 = 1;
  7. public static void main(String[] args) {
  8. Test2 test = new Test2();
  9. System.out.println("test_char: " + test.test_char);
  10. System.out.println("char->int: " + (int) test.test_char);
  11. System.out.printf("char->int(hex): %x\n", (int) test.test_char);
  12. System.out.println("test_char2: " + test.test_char2);
  13. System.out.println("test_char3: " + test.test_char3);
  14. System.out.println("test_char4: " + test.test_char4);
  15. System.out.println("test_char5: " + test.test_char5);
  16. }
  17. }

输出:

  1. test_char:
  2. char->int: 20320
  3. char->int(hex): 4f60
  4. test_char2:
  5. test_char3:
  6. test_char4:
  7. test_char5:

局部变量没有默认值

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

发表评论

表情:
评论列表 (有 0 条评论,237人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java基础学习笔记

    java面向对象:封装,继承,多态(i.静态多态(重载) ii.动态多态(方法重写)) 面向过程:站在计算机的角度去抽象问题和解决问题 面向对象:站在现实世界的角度去抽象和

    相关 java 初始化默认

    在mybatis中,如果初始化值,会导致updateSelective时,把原来的值替换掉。因此不建议使用初始化值。 但在freemark前端时,如果没有值初始化值,需要额外

    相关 Java基础学习心得笔记

    对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变。面向过程就是把你的代码封装成函数,然后依次去...