MyEclipse快捷键:
Ctrl + d 删除一行
Alt + / 自动补全
Ctrl + 1 纠错
Ctrl + /注释
Ctrl + Alt + down 复制一行
main方法自动补全 main + alt +/
ctrl +shift +f 格式化
ctrl +/ 注释和取消注释
ctrl + shift +/多行注释
ctrl + shift +\取消多行注释
ctrl+shift +t 查找类
ctrl +shift +r 查找资源
ctrl + shift + o 自动import不再同一个包下的类
封装的相关知识
1、所有属性私有化,private修饰,表示私有 数据只能在本类中访问
2、对外提供简单的操作入口, set方法和get方法
3、set方法的命名规范
public void set+属性名首字母大写{}
public void setAge(int a){
age = a; }
4、get方法的命名规范
public int getAge(){
return age;
}
5、需要重点掌握的知识点:
setter and getter 方法没有static关键字
有static关键字的方法怎么调用:类名.方法名(实参)
没有static关键字的方法怎么调用:引用.方法名(实参)
例子:
package Test03;
public class UserTest {
public static void main(String[] args) {
User s = new User(100,"zhangsan");
System.out.println(s.getId());
System.out.println(s.getName());
}
}
java类中构造方法的知识点:
1、语法结构: [修饰符列表] 构造方法名 (形式参数列表){
构造方法体;
}
2、普通方法的语法结构: [修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
}
3、构造方法不能写返回值类型(不代表没有返回值)
4、构造方法名必须和类名保持一致
5、意义:通过构造方法的调用,可以创建对象
6、怎么调用?
方法修饰符有static的时候:类名.方法名(实参列表)
方法修饰符没有static的时候:引用.方法名(实参列表)
构造方法 new 构造方法名(实参列表);
//构造动物猫的对象:
Animal a = new Cat();
7、构造方法调用执行后有返回值吗?
有返回值,不需要写return 结束后会自动返回值
返回值类型是所在类的类型,因为就是类本身所以不用编写
8、当一个类中没有定义任何的构造方法的时候,系统会默认给该类提供一个无参数的构造方法,这个构造方法叫做缺省构造器
9、当一个类显示的将构造方法定义出来了,那么系统就不在默认为该类提供缺省构造器,建议手动为该类提供无参数的构造方法,因为无参数构造方法太常用
10、构造方法支持重载机制,一个类中写多个构造方法显然构成了重载机制。
1、构建方法的作用:
创建对象 创建对象的同时,初始化实例变量的内存空间
2、在myeclipse中怎么查看访问的是哪个属性,访问的是哪个方法?
按ctrl键鼠标移动到查看的元素上,出现下划线的时候点击
3、在类中元素过多,怎么查看,快捷键ctrl+o,然后大概搜索
4、成员变量之实例变量,属于对象级别的变量,这种变量必须先有对象才能有实例变量。
5、实例变量没有手动赋值,系统自动赋值,这个系统自动赋值实在什么时候完成的呢?
实际上,实例变量的内存空间是在构造方法的执行过程中进行开辟的,完成初始化的,并完成赋值
this关键字
1、没有static关键字的方法被称为“实例方法” 怎么访问?“引用.”
2、没有static关键字的变量被称为“实例变量”
3、当一个行为/动作执行的过程中需要对象的参与,那么这个方法一定是要定义为“实例方法”。不要带static关键字
4、static的方法调用不需要对象直接使用类名,所以执行过程中没有当前对象,所以this不能使用在带static关键字类中
5、this是一个引用,是一个变量,保存了内存地址指向了自身,this存储在JVM堆内存java对象内部
6、创建100个java对象就有100个不同的this
7、this可以出现在“实例方法”中,this指向当前正在执行的这个动作的对象。
8、this多数情况下可以省略不写
//实例方法如何调用?
class One
{
float x; //x为实例变量
static int y; //只要有关键字static, y为类变量
}
//有static 不能直接调用实例变量和实例方法
//必须new一个对象,然后用引用.方法名(变量名)
**//下面是错误演示**
public class ThisTest03 {
//实例变量
String name;
//实例方法
public void doSome(){
}
//不创建对象,无法访问实例变量和实例方法
public static void main(String[] args) {
System.out.println(name);(访问不了)
dosome;(访问不了)
}
}
//通过创建对象访问实例变量和实例方法
public class ThisTest03 {
String name;
public void doSome(){
}
public static void main(String[] args) {
ThisTest03 w = new ThisTest03();
System.out.println(w.name);
}
}
普通的带static和不带static的主方法的调用
public class ThisTest02 {
public static void main(String[] args) {
//调用普通方法:类名.方法名;
ThisTest02.doOther();
//调用构造方法:引用.方法名;
ThisTest02 s = new ThisTest02();
s.doSome();
}
//构造方法
public doSome(){
System.out.println("do some");
}
//普通方法
public static void doOther(){
System.out.println("do other");
}
}
有关带static和不带static的方法调用及实例变量调用的综合案例:
综合案例:
public class Test {
//带static的方法
public static void method1(){
//调用doSome
//完整方式的调用
Test.doSome();
//省略方式的调用
doSome();
//访问i
//完整方式访问
//省略方式访问
//调用doOther
Test t = new Test();///method1中没有对象,需要建立对象。
//完整方式的调用
t.doOther();
//省略方式的调用
//访问i
System.out.println(t.i);
//完整方式访问
//省略方式访问
}
//不带static的方法
public void method2(){
//调用doSome
Test.doSome();
doSome();
//完整方式的调用
//省略方式的调用
//调用doOther
this.doOther();
doOther();
//完整方式的调用
//省略方式的调用
//访问i
System.out.println(i);
//完整方式访问
//省略方式访问
}
this用来区分实例变量和局部变量的时候不能省略
this可以使用在哪里?
1、可以使用在实例方法中,代表当前对象【语法格式:this.】
2、可以使用在构造方法中,通过当前的构造方法调用其他方法【语法格式:this()】
重点:this()调用构造方法只能在第一行
例子:
//构造函数
//无参数的构造类型,进行属性的初始化
public Data() {
this.year = 2008;
this.mouth = 1;
this.day = 1;
}
//有参数的数据类型进行赋值。
public Data(int year, int mouth, int day) {
//这里的this是不能省略的,局部变量和实例变量共存
this.year = year;
this.mouth = mouth;
this.day = day;
}
我们构造了两个方法,一个是无参数的一个是有参数的,使用无参数的来进行初始化赋值,有参数的进行再次赋值,但是 这样会导致代码大段重复,后期修改会很麻烦,所以这里有更加好的方法。
使用this()在无参数的构造方法中调用有参数的构造方法,进行直接初始化赋值。
//构造函数
public Data() {
this(2008,1,1);//使用this来调用其他构造方法
}
public Data(int year, int mouth, int day) {
super();
this.year = year;
this.mouth = mouth;
this.day = day;
}
static关键字的学习
1、带有static的方法既可以使用类名的方式访问也可以使用引用的方式的访问,但是实际上执行的时候和引用指向的对象无关
2、静态变量在类加载初始化的时候初始化,不需要创建对象,内存就开辟了
3、静态变量储存在方法区内存中
什么时候成员变量为实例变量呢?
—所有对象都有这个属性,但是这个属性的值会随着对象的变化而变化
什么时候成员变量为静态变量呢?
—所有对象都有这个属性,并且所有对象的这个属性的值是一样的,建议定义为静态变量,节省内存空间
静态变量在类加载的时候初始化,内存在方法区中开辟,访问的时候不需要创建对象,直接使用“类名.静态变量名”的方式访问
可以使用static关键字定义“静态代码块”
1、语法格式
static{
java语句;
}
2、静态代码块在类加载时执行,并且只执行一次。
3、静态代码块在一个类中可以定义多个,并且遵循自上而下的顺序执行。
4、静态代码块的作用是什么?怎么用?用在哪儿?
-这个当然和具体需求有关,例如项目要求在类加载的时刻执行完成日志的记录。那么这段日志的代码就可以编写到静态代码中,完成日志记录。
–静态代码块是java为程序员准备的特殊时刻,称为类加载时刻,若希望在此刻执行一段特殊的程序,该程序可以直接放到静态代码块当中。
5、通常在静态代码块当中完成预备工作,先完成数据的准备工具,例如:初始化连接池,解析XML配置文件。。。。
方法什么时候定义为静态的?
方法描述的是动作,当所有的对象执行这个动作的时候,最终产生的影响是一样的,那么这个动作已经不再属于某个对象了,可以将这个动作提升为类级别的动作,模板级别的动作。
继承:
关于java语言中继承
1、继承是面向对象三大特征之一:封装、继承、多态
2、继承基本的作用:代码复用。但是继承最重要的作用是:有了继承才有了以后的"方法的覆盖"和"多态机制"
3、继承语法格式:
[修饰符列表] class 类名 extends 父类名{
类体= 属性 + 方法
}
4、java语言当中的继承只支持单继承,一个类不能同时继承很多类,只能继承一个类。在c++中支持多继承
5、关于继承中的一些术语:
B类继承A类,其中:
A类称为:父类、基类、超类、superclass
B类称为:子类、派生类、subclass
6、在java语言中子类继承父类继承父类哪些数据呢?
私有的不支持继承
构造方法不支持继承
其他数据都可以被继承
7、虽然java语言中,只支持单继承,但是一个类也可以间接继承其他类,例如:
C extend B{
}
B extend A{
}
A extne T{
}
C直接继承B类,但是C类间接继承T、A、B类
8、java语言中假设一个类没有显示继承任何类,该类默认继承JavaSE库当中提供的java.lang.Object类