zoukankan      html  css  js  c++  java
  • 关于常量池-----小例子

    package com.xdf;
    
    import org.junit.Test;
    
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Set;
    
    public class HashSetDemo {
    
    
        @Test
        public  void  testHashSet(){
            String  a="abc";
            String  b="abc";
            String  c=new String("abc");
            System.out.println(a.hashCode());
            System.out.println(b.hashCode());
            System.out.println(c.hashCode());
            System.out.println(a.hashCode()==b.hashCode());
            System.out.println(a.hashCode()==c.hashCode());
    
        }
    
    
    
    
        @Test
        public  void  testString(){
    
            /**
             *   01.在栈中开辟空间存储a
             *   02.拿“abc”字符串去常量池中查询有没有,因为我们是第一次创建,所以没有
             *   03.在常量池中开辟空间存储"abc"
             *   04.栈中的a就指向了常量池中的"abc"地址
             */
            String  a="abc";
            /**
             *   01.在栈中开辟空间存储b
             *   02.拿“abc”字符串去常量池中查询有没有,有
             *   03.在常量池中不会开辟空间存储
             *   04.栈中的b就指向了常量池中的"abc"原有地址
             */
            String  b="abc";
            /**
             *   01.在栈中开辟空间存储c
             *   02.拿“abc”字符串去常量池中查询有没有
             *   有:直接去堆中开辟空间保存"abc"
             *   没有:在常量池中开辟空间存储"abc",之后再去堆中开辟空间保存"abc"
             *   03.栈中的c指向了堆的"abc"
             *
             */
            String  c=new String("abc");
            System.out.println(a==b);
            System.out.println(a==c);
            System.out.println(a.equals(c));
        }
    
    
    
        @Test
        public   void  testIntern(){
            String  a="abc";
            String  b=new String("abc");
            String  c=new String("abc");
            System.out.println(a==b);
            System.out.println(a==b.intern()); //让b去常量池中寻找引用
            System.out.println(c.intern()==b.intern()); //让bc去常量池中寻找引用
        }
        @Test
        public   void  testFinal(){
            /**
             * 创建了3个变量
             *  常量
             */
             String  a="abc";
                     a="bcd";
          final   String  b="a";
          final   String  c="bc";
          System.out.println(a==(b+c));//不会自动拼接abc
        }
    
    
        /**
         *  -128 127 存在常量池中
         */
        @Test
        public  void  testInt(){
            Integer num1=128;
            Integer num2=128;
            Integer num3=new Integer(128);
            System.out.println(num1==num2);
            System.out.println(num1==num3);
        }
    
    }
  • 相关阅读:
    通过class定位打包后的resour路径
    maven-antrun-plugin
    maven-shade-plugin Premain-Class
    mac settings 在idea位置
    (第七天)[js] 统计某一字符或字符串在另一个字符串中出现的次数
    (第六天)[jS] 写一个去除制表符和换行符的方法
    (第五天)[js] 写一个把字符串大小写切换的方法
    (第四天)[js] 写一个方法把下划线命名转成大驼峰命名
    (第三天)[js] 去除字符串中最后一个指定的字符
    详解python中的*与**用法
  • 原文地址:https://www.cnblogs.com/SFHa/p/9673882.html
Copyright © 2011-2022 走看看