每多学一点知识,多一份精彩与快乐!

Java学习笔记 第十一季


1.接口中所声明的方法都是抽象方法。接口中的方法都是public的。

2.接口中也可以定义成员变量。接口中的成员变量都是public,final,static的。

3.一个类不能即是final,,又是abstract的。因为abstract的主要目的是定义一种约定,让子类去实现这种约定,而final表示该类不能被继承,这样abstract希望该类可以被继承而final明确说明该类不能被继承,两者矛盾。因此一个类不能即是final的,又是abstract的。

4. Desing Pattern(设计模式)。单例模式(Singleton):表示一个类只会生成唯一的一个对象。

5.包(package)。用于将完成不同功能的类分门别类,放在不同的目录(包)下。包的命名规则:将公司域名反转作为包名,对于包名:每个字母都需要小写。如果定义类的时候没有使用package,那么java就认为我们所定义的类位于默认包里面(default package)。

6.编译带有package声明的java源文件有两种方式:

一.直接编译,然后根据类中所定义的包名,逐一手工建立目录结构,最后将生成的class文件放到该目录结构中。

二.使用编译参数 -d,方式为:javac -d .源文件.java,这样在编译后,编译器会自动帮助我们建立好包所对应的目录结构。

三.执行通过java 目录.class文件。

7.有两个包名,分别是aa.bb.cc与aa.bb.cc.dd,那么我们称后者为前者的子包。

8.导入(import),将使用package分离的各个类导入回来,让编译器能够找到所需要的类。

9.import的语法:import com.csssea.PackageTest;

10.import con.csssea.* ,表示导入com.csssea包下面的所有类。

11.import aa.bb.* 并不会导入aa.bb.cc包下面的类。这时需要这样写:

import aa.bb.*;

import aa.bb.cc.*;

12.关于package,import,class的顺序问题:

一.首先需要定义包(package),可选。

二.接下来使用import进行导入,可选。

三.然后才是class或interface的定义。

13.如果两个类在同一个包下面,那么则不需要导入,直接使用即可。

14.访问修饰符(access modifier)。

1) public(公共的):被public所修饰的属性和方法可以被所有类访问。

2)protected(受保护的):被protected所修饰的属性和方法可以在类内部,相同包以及该类的子类访问。

3) private(私有的):被private所修饰的属性和方法只能在该类内部使用。

4)默认的(不加任何访问修饰符):在类内部以及相同包下面的类所使用。

15.Instaceof:判断某个对象是否是某个类的实例。语法形式:引用名 instanceof 类(接口名),它返回一个boolean值。

public class Instanceof

{

public static void main(String[] args)

{

People people = new Man();

System.out.println(people instanceof People);

}

}

class People

{

}

class Man extends People //结果为true,因为Man是Ppeople的子类,根据继承,子类就是父类,因此Man也可以看作是People的实例。

{

}

16.相等性的比较:

1)对于原声数据类型来说,比较的是左右两边的值是否相等。

2)对于引用类型来说,比较左右两边的引用是否指向同一个对象,或者说左右两边的引用地址是否相同。

17.Java.lang.Object类。 Java.lang包在使用的时候无需显式导入,编译时由编译器自动帮助我们导入。

18.API(application program interface),应用编程接口。

19.当打印引用时,实际上会打印出引用所指对象的toString()方法的返回值,因为每个类都直接或间接地继承object,而object类中定义了toString(),因此每个类都有toString()这个方法。

20.equals()方法,该方法定义在Object类当中,因此Java中的每个类都具有该方法,对于object类的equals()方法来说,它是判断调用equals方法的引用与传进来的引用是否一致,既这两个引用是否指向的是同一个对象。对于object类的equals()方法来说,等价于 ==。

21.对于string类的equals()方法来说,它是判断当前字符串与传进来的字符串的内容是否一致。

22.对于string对象的相等性判断来说,请使用equals方法,而不要使用==。

23.String是常量,其对象一旦创建完毕就无法改变。当使用+号拼接字符串时,会生成新的String对象,而不是向原有的String对象追加内容。

24.String pool(字符串池),

25.string s = “aaa”; (采用字面值方式赋值)

   1)查找string pool中是否存在”aaa “这个对象,如果不存在,则在string pool中创建一个”aaa”对象,然后将string pool中的这个”aaa”对象地址反回来,赋给引用变量s,这样s会指向string pool中的这个”aaa”字符串对象。

   2)如果存在,则不创建任何对象,直接将string pool中的这个”aaa”对象地址反回来,赋给s引用。

26.string s = new String(“aaa”);

   1)首先在string pool 中查找有没有”aaa”这个个字符串对象,如果有则不在string pool 中再去创建 “aaa”这个对象了,直接在堆中(heap)中创建一个”aaa”字符串对象,然后将堆中的这个”aaa”对象的地址反回来,赋给s 引用,导致s指向堆中创建的这个”aaa”字符对象。

   2)如果没有,则首先在string pool 中创建一个“aaa”对象,然后再在堆中(heap)创建一个”aaa”对象,然后将堆中的这个”aaa”对象的地址返回来,赋给s引用,导致s引用,导致s指向了堆中所创建的这个“aaa”对象。

还没有评论呢。

Respond

get in on the action.

About CarzyFish

Search

腾讯微博

Google Friend

联盟站点