您的位置:首页 > 编程语言 > Java开发

JAVA学习笔记(2)

2017-04-05 20:43 211 查看
内存解析 构造方法 java命名规则  方法重载  
this关键字  static关键字  package和import关键字
 
继承 访问权限控制

一、内存解析(各种面向对象语言内存布局都是这样)

 


如图,在main()方法中,有局部变量c1和c2,因此在stack内存中分配c1内存和c2内存,因为c1和c2是C类型的类,因此new关键字执行时,系统会给c1、c2分配堆内存,堆内存的首地址分别存放在c1、c2中,c1、c2的堆内存之中会存放各自的成员变量(并通过c1.i、c2.j…的形式访问),但是每个类的方法只有执行的时候才会动态分配。

二、构造方法(构造函数)

1.构造方法是定义在类中的一个用来初始化对象的方法。

2.构造函数与类同名,而且没有返回值(即使写void也会报错)。

3.使用“new+构造方法”创建一个新对象。

4.一旦自定义了构造方法,系统默认的构造方法就失效了,需要重新定义。

 ****************************************************

 public class Person {
int id;
int age = 20;

void Person(int _id, int _age) {
id = _id;
age = _age;
}

public static void main(String[] args) {
Person tom = new Person();  

tom.Person(1, 25);
Person adan = new Person(1,25);  

}

}

 

 

 ******************************************************

使用new的时候调用的是实际上是类的构造方法,如果没有定义,则调用默认的构造方法。例如上面例子中Person的默认构造方法就是“Person(
){ }”,因此我们可以“Person tom = new Person();”来声明一个tom对象。但因为已经自定义了构造方法,因此这个默认的构造方法已经不能用了,因此是错误的,‚才是唯一正确的声明方法。但如果我们想让‚都正确,就需要新定义默认的构造函数,即重载构造函数。

三、约定俗成java命名规则

1.类名首字母大写  

2.方法名和变量名首字母小写

3.运用驼峰标识(如果标识符是好几个单词构成,除了首字母以外后面每个单词的首字母大写)

四、方法重载

1.一个类中可以定义名字相同但是参数不同(个数不同或类型不同)的多个方法,调用的时候会根据不同的参数来选择对应的方法。

2.注意重名的错误和重载的区别。

五、this关键字

 


1.在类的方法中使用this关键字来代表使用该方法的对象的引用。

2.使用this关键字还可以解决方法中成员变量和参数重名的问题,如上图。

3.也可以把this看做一个变量,它的值是当前对象的引用。

4.当必须指出当前使用方法的对象是谁时要使用this。

六、static关键字

1.在类中,用static声明的成员变量是静态成员变量,它是该类的共享变量,在第一次使用的时候被初始化,对于该类的所有对象来说,static成员变量只有一份。

 

2.用static声明的方法是静态方法,在调用该方法的时候不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。

 

3.可以通过对象的引用或者类名(不需要实例化)来直接访问静态成员(例如:“System.out”中的out就是静态成员)。

 

4.在右面图片中,static的sid可以计数用,每次new一个cat对象,sid自动+1。

 *****************************************************************************

 public class Cat {

    private static int sid = 0;

    private String name; 

    int id;

    Cat(String name) {

        this.name = name;  

        id = sid++;

    }

    public void info(){

        System.out.println

               ("My name is "+name+" No."+id);

    }

    public static void main(String arg[]){

        Cat.sid = 100;

        Cat mimi = new Cat("mimi");

        mimi.sid = 2000;

        Cat pipi = new Cat("pipi");

        mimi.info(); 

        pipi.info();

    }

}

 *******************************************************

七、package和import关键字:用来解决类名冲突问题

1.package用来把类放在对应的包里面

Package关键字必须写在源代码的第一行,其他位置不可以。若缺省该语句,则指定无名包。

约定俗成包名就是把域名颠倒(比如我的域名 www.wuxi.com,那么我的包名就是com.wuxi.*),因为域名在全球是唯一的,因此不会产生重名问题。

包可以包好多层,每一层对应文件体统的文件目录层次。

如果想要让文件的类被其他源文件引用,先要把该类打包(在开头使用package语句),然后要保证类文件切实处于其所归属Package所对应的相对路径下。

引用其他类的源文件应该和其他类的包处于同一个相对路径上(同一个文件夹里)。如果相对于路径不同,必须给需要引用的类添加环境变量classPath。

2.import用来在源文件中导入需要用到的其他文件中定义的类。

如果想要用其他文件的类,要么写全包名+类名,要么用import来简化。比如可以加上“import com.wuxi.Dog”来使用“com.wuxi”包中的“Dog”类,也可以使用“import
com.wuxi.*”来使用“com.wuxi”中的所有类。

执行一个类需要写全包名。

唯一一个不需要引入可以直接用的类“java.lang”,里面包括了java语言的核心类,有String、Math、Interger、System、Thread等等。其他包的类必须引用。

3.使用jar命令自己打包

在需要打包的类的父目录里面使用“jar -cvf test *.* ”,即把当前目录下所有文件(*.*)打包,打包以后的包名为test.jar


可以把整个jar包设置classPath环境变量,然后就可以引用这个jar包里面的类了。

八、继承

 


九、访问权限控制

 


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: