Java 填坑笔记一

  • String运算会产生新的String, 不会改变其原有的值
    StringBuilder和StringBuffer会改变其原有的值, 所以循环内字符串运算推荐用StringBuilder
    @Test
    public void test() {        
        List<String> strings = new ArrayList<>();
        strings.add("hehe");
        for (String e: strings) {
            e = e.toUpperCase();
            e += "hehe";
        }
        for (String string : strings) {
            System.out.println(string);
        }
    }
   /*
    运行结果:
    hehe
   */
    @Test
    public void test() {        
        List<StringBuilder> strings = new ArrayList<>();
        strings.add(new StringBuilder("hehe"));
        for (StringBuilder e: strings) {
            e.append("hehe");
        }
        for (StringBuilder string : strings) {
            System.out.println(string);
        }
    }
   /*
    运行结果:
    hehehehe
   */
  • Integer对象 -128-127范围的数字 在IntegerCache里,调用时直接引用. 所以Integer Long String对象的比较,应该调用equals方法.
    @Test
    public void test() {        
        for (Integer integer = -129; integer <= 128; integer++) {
            Integer j = integer.intValue();
            if (integer != j)
                System.out.println(integer + " " + j);
        }
     }
  /*
    运行结果:
    -129 -129
    128 128
   */

    @Test
    public void test() {        
        Integer aInteger = 2;
        Integer bInteger = 2;
        Integer cInteger = 200;
        Integer dInteger = 200;
        System.out.println(aInteger == bInteger);
        System.out.println(cInteger == dInteger);
    }

  /*
    运行结果:
    true
    false
   */
  • 值传递和引用传递,对象在方法中都是引用传递。但是Integer等类型会自动拆装箱,String类型会产生一个新的String.所以这几个对象在方法中传递不会影响值.

   class Person {
        int age;
        String name;
        public Person(int age, String name) {
            this.age = age;
            this.name = name;
        }
        
        @Override
        public String toString() {
            return "age: " + String.valueOf(this.age) + ", name: " + name;
        }
    }
    
    @Test
    public void test() {        
        int a = 1;
        addOne(a);
        System.out.println(a);
        Person person = new Person(10, "child");
        addTwo(person);
        System.out.println(person);
    }

    private void addOne(int val) {
        val += 1;
    }
    
    private void addTwo(Person person) {
        person.age += 2;
    }

    /*
      运行结果:
      1
      age: 12, name: child
     */
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,896评论 18 399
  • Java中没有指针,只存在值传递 对于对象(数组,类,接口)的传递似乎有点像引用传递,可以改变对象中某个属性的值。...
    倚岚听风阅读 3,315评论 0 0
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,385评论 0 3
  • 三元运算符:用来完成简单的选择逻辑,使用格式:(条件表达式)?表达式1:表达式2; 遍历List集合,对集合中最后...
    倚岚听风阅读 4,312评论 0 0
  • 觉一无音宫主阅读 1,189评论 1 0