Java拷贝值的传递随笔

今天看到Java编程思想时有一句 Java永远都是值传递,Java的值传递传递的永远是值的拷贝,意即Java方法的传递只是值的拷贝传递,这一点记录下以防以后自己搞混。

封装继承多态是Java三大特性,发现很多人都很容易被最后的多态搞懵,我自己有时候也容易搞混,这里特地说明下:

对于多态,即父类对象可以由子类对象替代,父类型的变量可以引用子类型的对象。举例:

Father father=new Child()(=左边是父类的一个声明,所有类都有类型,=左边的叫声明类型,右边的child子类对象叫做实际类型,声明类型决定了此变量可调用的方法数量(father包含的所有方法),实际类型决定了此变量具体会调用重写的方法(如果father的方法中有被child重写的那就调用重写的方法),这就跟动态绑定有关),private类不可以被重写,静态方法可以被继承但最好不要重写,重写后会被覆盖,父类的静态被隐藏,我们成这种一般叫静态绑定(final static都是的)

private OverridingFinal2 of2 = new OverridingFinal2();
public static void main(String[] args) {
FinalOverriding finalOverriding = new FinalOverriding();
finalOverriding.of2.a();
finalOverriding.of2.b();
OverridingFinal of = finalOverriding.of2;
of.a();
of.b();
WithFinals wf = of;
wf.a();
wf.b();
}
class WithFinals {
private final void a() {
System.out.println("WithFinals a");
}
private  void b() {
System.out.println("WithFinals b");
}
}
class OverridingFinal extends WithFinals {
private final void a() {
System.out.println("OverridingFinal a");
}
private void b() {
System.out.println("OverridingFinal b");
}
}
class OverridingFinal2 extends OverridingFinal {
private final void a() {
System.out.println("OverridingFinal2 a");
}
private void b() {
System.out.println("OverridingFinal2 b");
}
}
}

在子类覆盖父类方法时,子类的可见性不能低于父类,基本规范。父类为public ,子类必为public。

方法签名包括方法名参数类型,重写要保证方法签名完全相同,返回类型不是签名,但要保证抱回类型和父类型的兼容性,例如父类型的子类型。

public class Test00001 {

private void method() {

System.out.println("abc");

}

public void method1() {

method();

}

public static void main(String[] args) {

Test00001 test01 = new Test0002();

test01.method1();

System.out.println("------------------------------------------");

Test00001 test02 = new Test00001();

test02.method1();

System.out.println("-------------------------------------------");

Test0002 test03 = new Test0002();

test03.method2();

System.out.println("-----------------------------------------------");

}

}

class Test0002 extends Test00001 {

public void method2() {

method();

}

public void method() {

System.out.println("cde");

}

}

字符串拼接方式,记录一下。

//性能最高的方法

public class Str {

public void testStringBuilder() {

      StringBuilder sb = new StringBuilder();

      for (int i = 0; i < 100000; i++) {

          sb.append(String.valueOf(i));

      }

      sb.toString();

  }

public static void main(String[] args) {

      System.out.println(new CutString().testStringBuffer());

  }

}

}

 //性能最差

  public String testPlus() {

      String s = "";

      for (int i = 0; i < 10000; i++) {

          s = s + String.valueOf(i);

      }

      return s;

  }

//较好

public String testConcat() {

    String s = "";

    for (int i = 0; i < 10000; i++) {

        s = s.concat(String.valueOf(i));

    }

    return s;

}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值