java每日练习-1

1.所有类都来源于object超类。

2.对象状态的改变必须通过调用方法实现,否则就破坏了封装性。对象的状态为每个对象所保存的描述当前特征的信(可以理解为类的属性)

3,类的每一个实例的标识都不相同,状态同样不同。即使两个拥有相同的状态的对象都不相同

4,一个对象变量并没有实际包含一个对象,仅仅引用一个对象,在java中,任何对象变量的值都是对存储在另一个地方的一个对象的引用,new操作符的返回地址也是一个引用

4.1 首先当使用new 操作符时,会对一个类初始化一个对象(生成一个内存地址),此时当一个对象变量等于new 初始化的对象时就会把这个对象的内存地址返回给对象变量,即引用。
4.2 当使用对象变量a给另一个对象变量b赋值时,就会把对象变量a引用对象赋值给b,此时a,b引用的是同一块内存地址,所以此时采用`==`比较a,b时会返回true,但不代表a和b的对象一样,即`==`比较的仅仅是内存地址,a和b所引用的对象时两个不同的对象(标识符不同)。

5,java的对象存储在堆中,且java的对象变量与c++的指针类似

Date birthday //java
等同于
Date* birthday //c++

6,类的构造器总是伴随着new操作符一起使用

Employ number01("jobn",1000);//c++中允许
Employ number01("jobn",1000);//java中不允许,编译不通过

7,java中所有方法必须在类的内部定义,但并非是内联的方式,在c++中在类内部定义的方法会自动的称为内联的方法。

8,类的方法可以访问类的所有私有域(私有属性)但是类的对象不能访问类的私有域。

class Employee {
    private  string name;
    public boolean equals(Employee other){
        return name.equals(other.name);
    }
}
Employee harry;
Emplay boss;
//下面的语句是合法语句
if(harry.equals(boss){
   ...
}
//下面的语句是非法语句
boss.name;

原因在于harry.equals(boss)是类的方法,类的方法可以访问本类中所有的私有域。

9,final 域,可以将某个属性声明为final,则此属性即为final域,对于这样的域必须在构造对象时初始化,并且这些域之后不可改变,即这些域没有set方法。同样可以将某个对象声明为final,final Employee emplyee此时表明emlpyee这个对象不可以再引用其他的Employee对象。

10,静态方法可以访问静态自身类中的静态域

11,方法参数:java程序设计语言总是采用按值调用,即方法得到的所有参数值的一个拷贝,此时方法不能修改传递给它的任何参数变量的内容。对象的引用作为参数可以对参数进行改变。

//使用对象的引用可以改变参数的值
public void set(Employ e){
    x.raiseSalary(200);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值