java中PS的几点

1.增强for循环只能取数组或集合中的数据,要修改数据还是需要使用原始的(for)循环

原因:

Iterator非线程安全的原因(猜测)

 

2.

接口中的所有方法必须是公用和抽象的,数据成员必须是公用静态的常量,并且没有构造方法

方法都是公用和抽象的,数据成员都是公用静态的常量,但都不需要这样修饰与声明,这是默认的(也可以显示这样声明)

 

与类不同。一个接口可以同时继承多个接口(接口是一种特殊的类)

interface A extends B,C

 

3.子类的不能覆盖父类的静态方法,只能隐藏父类的静态方法

覆盖则出错,但可以隐藏,如:

public class A {

 public static void main(String[] args) {
  B b = new C();
  b.print();
 
 }
}

 

class B{
 public static void print(){
  System.out.println("B");
 }
}

 

class C extends B{
 public static void print(){
  System.out.println("C");
 }
 
}

 

 

4.java没有了指针,但Object a = new Object();a其实就是一个受到限制的指针。

  (当然严格的将a不是指针)

  java把这叫做引用,但C++中也有引用。这2个引用是不一样。

  java的引用就是"指针",C++的引用(翻书吧)

 

  java限制了指针的操作(根据类的继承结构,即类型,这个还是一样的,如char* int*不能=)

且java对指针的操作进行了保护,检查等

所以在大多时候Java中不用关心如何操作这个"指针",

  只有局部的引用,没有局部的对象。因为基本类型数据存放在Stack中,存放的是数据。而产生对象时,只把对象的reference存放在stack中,用于指向某个对象,对象本身存放在Heap中。
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。另外,依赖于具体的编译器/JVM,局部变量还可能得到进一步优化。

  从实现上来讲,引用可以理解为一种受限的指针,引用底层可以采用指针来实现,也可以采用句柄的方式实现。早期jvm一般采用句柄的方式,现在的jvm,比如sun的,IBM的,一般就是用指针来实现。
  不过从语言的角度来将,没有必要把
java的引用和C的指针来比较。
  指针是可以进行与整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算。
  引用不行,只能进行赋值运算

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值