• java中基础类型的初始值,以及一些平时不注意的小知识


    有时候总是卡在一些类型的初始值上,今天闲下来就来自己给自己记录一下。

    String   a; 

    如果直接打印会提示未初始化。并且未初始化的a不能比较。

    这时,我们定义个person类

    person{

      String name;

      private Integer age;
      private int aa;

    .......

    }

    我们来看看age会怎么样。

    结果还是不能够打印,但是却可以用于比较

    person p1= new person();
            
            
    if("".equals(p1.getName())){
        System.out.println("OK 空字符串");
    }else if(p1.getName()==null){
        System.out.println("OK null");
    }

    结果:OK null

    2、int

    int a;
    System.out.println(a);

    这里报错,不能够使用未实例化的。同时说明不能够用这个数运算。

    同样放在类里面的  int  aa

    person p1 = new person();

    System.out.println(p1.getAa());

    这时候的  aa  打印出来是0。而且这个值还可以运算。

    (同时也说明了一点,包装类默认值)

    3、 Integer

    p1.getAge打印出来是null.

     4、说完上面的,来看一下我遇到的一些小实例。

         String a1="a";
            String a2="a";
            String a3=new String("a");
    
            if(a1==a3){
                System.out.println("Y");
            }else{
                System.out.println("N");
            }
            
            int a = 1;
            Integer b = new Integer(1);
            Integer c = new Integer(1);
    
            if(b.equals(c) ){
                System.out.println("是");
            }else{
                System.out.println("否");
            }
                

    大家先看一下上面的a、b、c两两比较,结果是会输出是,还是否。

    我先来告诉大家答案吧,a、b、c两两比较都是“

    为什么?我来大致的解释一下。这里int 为基本数据类型,他们有一个特点,就是存在栈中的数据可以共享。int a = 1;已经在堆中开辟了一块空间,之后integer在去实例化的时候不会重新去new 一个,因为他是包装类。如果还是不明白,自己运行一下,然后在上网查一下java基本数据类型在内存中的知识。

    看完上面数字的,我们在来比较一下a1、a2、a3

    a1和a2,结果Y。      a1和a3,结果N

    这里我也来解释一下吧,在java的内存中还有一个字符串池,利用String a1 = "a";实例化的a字符串会放到字符串池中,并在堆中开辟一个空间存放“a”。

    当String a2="a";时发现已经有a1="a";了所以直接让a2指向a即可。 

    但是String a3=new String("a");并不能和Integer一样,它是一个类,要去堆中重新开辟一块空间。

  • 相关阅读:
    CentOS挂载NTFS移动硬盘
    【算法与数据结构】动态规划
    【算法与数据结构】图的最小生成树 MST
    【C语言工具】AddressSanitizer
    【算法与数据结构】二叉堆和优先队列 Priority Queue
    【算法与数据结构】三种简单排序
    【算法与数据结构】并查集 Disjoint Set
    【算法与数据结构】二叉堆和堆排序
    【Linux 应用编程】进程管理
    【Linux 应用编程】进程管理
  • 原文地址:https://www.cnblogs.com/wangxiangstudy/p/5166095.html
Copyright © 2020-2023  润新知