java笔记——(4.6包—4.9this)

4.6包
1.如果希望包中的某个类能在其他包中使用,就必须把它声明为public
2.一个源文件中最多只能有一个public类
3.如果希望公用类中的某个成员能在其他包中访问,也应将它声明为public
4.关于包和目录:个人理解,包虽和目录对应,但java的包是逻辑上分类的概念,并不等同于实体上的目录(也就是说即使不同包的类文件处于同一目录,它们仍然是不同包的,个人理解,有错请指正)
5.设置classpath,加入包的起始目录,我的是%JAVA_HOME%\mylib\java这样可以在任何目录的java源文件中使用包中的公用类
6.在编译的同时将类文件放入指定包目录:javac -d c:\mylib\java Dog.java。也就是指定起始目录。假设Dog.java中package mypackage,那么类文件会被放到c:\mylib\java\mypackage
7.如果类不在默认包中,则使用其中的main()时,要在类名前加上包名。java mypackage.Dog
8.在源文件中使用其它包中的公用类:import mypackage.Dog
9.导入包中所有的类:import mypackage.*
10.JAR压缩工具:可以将很多类文件压缩到一个.jar文件中
11.在起始目录下执行jar cvf animal.jar mypackage。如果要使用animal.jar中的类,则必须将“完整路径+animal.jar”加入classpath中
4.7访问控制权限
12.java源文件名:当文件中有public类时,应当和类名相同,没有public类时,可任意。
13.默认访问权限:包访问权限
4.8作用域
14.java中,不能在嵌套的两个块中声明同名局部变量;在互不嵌套的块中则可以。
15.同一个类中的数据成员和方法之间可以重名,数据成员和局部变量之间可以重名(在该局部变量作用域内,重名数据成员被隐藏)。
16.隐藏的数据成员可以使用this来访问。
4.9this
17.使用this在一个构造方法中调用另一个构造方法(不能使用构造方法名调用)

java笔记——4.6包之前部分

上次果断把java退了,好吧,其实是没选上这门课,改成《算法分析与设计》了,于是自学java吧。突然发现原先看太快了,不久就忘了。。于是做些笔记。不过学过C++,看java确实一点不吃力。下面是一些java知识点,有些和C++相同,有些则存在区别。
1.不能在静态方法中直接访问所属类的非静态成员
2.非静态方法中可以直接访问所属类的静态成员
3.静态和非静态方法都可以创建或访问其所属类的对象
4.局部变量:方法体内和初始化块内声明的变量
5.对象名:其实是对象的引用名,是对象的地址
6.new返回创建的对象的地址
7.对象名之间可以=、+=、!=、==运算,其实是两个引用值(可以看成指针)在运算,而非对象本身
8.类的数据成员有默认值,局部变量没有默认值
9.不能用还未声明的数据成员(静态数据成员除外)给另一个数据成员赋值
10.如果类中显式定义了任何一个构造函数,编译器就不会自动为该类生成默认构造函数
例:如果为类Cat定义了Cat(int a,int b)则Cat cat=new Cat();是错误的
11.注意点:初始化的顺序:默认初始化(无法阻止)、声明时指定初值、构造方法
12.静态初始化块:
(1)在类体中,但不能在方法体内
static
{
……
}
(2)静态初始化块只会执行一次
13.实例初始化块(不带static):
{
……
}
14.不应在实例初始化块和构造方法中初始化化静态变量,因为会造成重复初始化。
15.初始化小结:
(1)首次使用某个类(创建该类的对象或访问静态成员):
java系统会将相应类文件载入内存
(2)载入过程中:
1>为静态变量分配空间并默认初始化
2>“按声明静态变量时指定初值”、“静态初始化块”在代码中的出现顺序执行初始化。
3>这些初始化只在类文件加载时执行一次。
(3)创建对象时:
1>为实例变量分配空间并默认初始化
2>“按声明变量时指定初值”、“实例初始化块”在代码中的出现顺序执行初始化。
3>构造方法初始化实例变量