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包里面的类了。
八、继承
九、访问权限控制
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包里面的类了。
八、继承
九、访问权限控制
相关文章推荐
- JAVA与模式 学习笔记(一) 统一的建模语言UML介绍(1)
- JAVA与模式 学习笔记(一) 统一的建模语言UML介绍(2)
- 我的Thinking in Java学习笔记(六)(zt)
- java对象序列化学习笔记(z)
- JAVAGUIDE(学习笔记1)
- 我的Thinking in Java学习笔记(九)
- JAVA学习笔记之Collection
- Java中文处理学习笔记——Hello Unicode
- Thinking in Java学习笔记(三)(zt)
- Java中文处理学习笔记
- java对象序列化学习笔记
- 我的Thinking in Java学习笔记(2)
- 我的Thinking in Java学习笔记(1)
- 我的Thinking in Java学习笔记(四) (zt)
- Java 学习笔记
- JAVA与模式 学习笔记(一) 统一的建模语言UML介绍(2)
- JAVA学习笔记之JIRA
- 我的Thinking in Java学习笔记(四)
- 我的Thinking in Java学习笔记(七)
- Thinking in Java学习笔记(2)(zt)