JAVA 对象和类

String s = new Date().toString();可以直接创建完新对象后就立即用其的方法。

 

一个对象变量并没有实际包含一个对象,而是仅仅引用一个对象。

 

GregorianCalendar类

java设计者决定把保存时间与给时间点命名分开来,这样就有两个类,date和GregorianCalendar.一个用来表示时间点,一个用来表示大家熟悉的日历表示法。事实上gregorianCalendar扩展了一个更加通用的类,这个类描述了日历的一般属性。Date可以与GregorianCalendar互相转化,gregorianCalendar有个方法getTime得到date对象。或者setTime可以把一个date对象给日历类。

 

基于类的访问权限

一个方法可以访问所属类的所有对象的私有数据,强吧!

class Employee{
    private String name;
    boolean equals(Employee other){
        return name.equals(other.name);
    }   
}

name是私有的,但是却可以访问所属类Employee对象的私有。

 

private final Date hireDate;

仅仅意味着储存在hireDate变量中的对象引用在构造之后不能被改变,但是并不意味hireDate是一个常量,他引用的对象还可以使用setTime更改器改变。

 

静态方法可以访问自身类中的静态域,因为他们都不是对对象操作,而是属于类的。但是不能访问实例域。

 

每个文件中只能有一个公共类,并且与文件名相同,其他类不能为public。

 

方法参数的两个概念

值调用表示方法接受的事调用者提供的值,而引用调用表示方法接受的是调用者提供的变量地址。一个方法可以修改传递引用所对应的变量值,而不能修改值调用所对应的变量值。Java总是值调用,方法得到的是所有参数值的一个拷贝,方法不能修改传递给他的任何参数变量的内容。基本变量就不说了,如果传递的是一个引用对象地址的变量也是同样,在方法里可以改变这个变量的值,貌似已经修改了这个变量,那么这个变量引用的也不是那个对象的地址了,但是出了方法,那个变量还是引用的那个对象的地址。这就是说Java来说一直都是值调用。永远不会改变传递过来的参数,因为修改的只是这些参数的拷贝,不管是基本类型的参数,还是引用对象地址的变量参数。

总结一下Java设计语言中方法参数的使用情况

1. 一个方法不能修改一个基本数据类型的参数

2. 一个方法可以修改一个参数引用的对象的状态。

3. 一个方法不能实现让对象参数引用一个新的对象。

 

重载

如果多个方法有相同的名字,不同的参数,便产生了重载。编译器通过各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配来挑选相应的方法。方法的签名就是方法名和参数类型,这是辨别使用哪个方法的依据,可以完整描述一个方法,返回类型不是方法签名的一部分,就是说两个方法不能名字相同,参数类型也相同但是却返回不同类型值。那么public,private synchronized也不属于签名。

 

如果类中提供了至少一个构造器,但是没有提供默认的构造器,在构造对象的时候如果没有给构造参数就被视为不合法。执行构造器之前先执行类里面构造方法外面的赋值操作。

 

参数变量的名字如果跟类里面的实例域同样的话,那么在这个方法里参数变量将屏蔽实例域,如果要引用实例域就要用this。

 

在构造器里调用另外一个构造器,而且还必须是第一句调用别的构造器,用this(...)来调用同一个类的另一个构造器。

 

初始化块也是在执行构造器之前先被运行,其实就是一对花括号包含若干句语言。顺序如下

1.所有数据域辈初始化为默认值

2.按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块,

3.如果构造器第一行调用了第二个构造器,则先执行第二个构造器主体。

4.执行这个构造器主体。

 

还可以在一个块前加上static也就是用静态的初始化块来对静态域进行初始化。

public class Hello{

  static{

  System.out.println("Hello, World");

}

}

没有main函数但是因为可以先运行初始化块,所以可以照样打印,之后才得到一个 没有main函数的错误信息。

 

类导入

如果都要用同名却不同包的类

java.util.Date deadline= new java.util.Date();

java.sql.Date today = new java.sql.Date();

 

如果在源文件顶部添加一条指令

import static java.lang.system;

就可以直接使用system类的静态方法和静态域不必加类名前缀了。

out.printf()...

exit(0)....

 

如果没有指定public private ,这个部分(类,方法或变量)可以被同一包中的所有方法访问。

 

类名方法名要尽量能够体现他们的职责。命名类名的良好习惯是采用一个名词(Oder)前面有形容词修饰的名词(RushOrder)或动名词(用ing的后缀)修饰名词。如billingaddress。对于方法来说习惯是访问其方法用get开头如getSalary,修改器用set开头 比如setSalary

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值