一些概念性的知识点

此处总结的一些概念:

1.main方法

2.static

3.final

4.abstract

5.构造方法

6.this

7.成员变量和局部变量

8.匿名对象


1.main方法

* main 主函数的特殊之处:

* 1.格式是固定的,能修改的只能是数组的名称(args)

* 2.被jvm所识别

*

* public:因为权限必须是最大的

* static:不需要调用对象,直接用主函数名就可以调用了(main)

* void:主函数没有具体返回值

* main:函数名,不是关键字,但它是jvm所识别的固定的名字

* String[] args:是一个主函数的参数列表,是一个数组类型的参数,而且元素是String类型的


2.static

static 是一个关键字,用于修饰成员变量和成员方法

* 使用场景:多个值都是一样的数据的时候(一般会赋予初始值)

* static特点:

* 1.被所有实例(对象)所共享

* 2.用类名调用,也可以实例调用

* 3.静态的加载优先于对象

* 4.随着类的加载而加载

*

* 静态方法:

* 特点:可以在主函数直接通过类.方法调用。在一个类中,静态只能直接调用静态属性和静态方法。

* 动态方法可以直接调用静态方法,没有局限性(可以调用静态成员和非静态成员)

* 成员:成员变量和成员方法


3.final

* final修饰的变量必须赋予初始值,并且只能赋值一次,是一个常量

* 常量一旦赋值就不能修改,只能在赋值的地方修改

* 修饰的方法不能被重写

* 修饰的类不能被继承

final修饰变量:

如果是基本类型,那么变量不能被改变,

如果是引用类型,那么是引用不能被改变,但是对象是可以变的

比如:

final StringBuilder build=new StringBuilder("hello world“);

build.apped("hello kitty");

这样是可以的

但是;

build=new StringBuilder("");

是会报错的


4.abstract

abstract:关键字 用于修饰方法和类

* 抽象方法:

* 普通类里不能有抽象方法

* 不能有方法体:public abstract void eat();也就是没有{}

* 抽象类:

* 有抽象方法的必须是抽象类,抽象类不能被实例化

* 类继承抽象类,必须重写它的全部抽象方法(除非这个类是抽象类)

* 抽象类的关系有可以是继承

* 一个类继承了抽象类,必须重写抽象类的抽象方法

* 抽象类的成员特点:

* 成员变量:可以有成员变量,也可以有常量

* 成员方法:可以有抽象方法,也可以有非抽象方法

* 构造方法:可以有无参构造和有参构造


5.构造方法

* 无参构造方法: 访问修饰符 方法名(){}

* public Study(){} 方法名和类名相同,方法没有返回类型(与返回值)

* 有参构造方法:根据类中的成员变量进行创建

* 例如 public Study(int age,String name){}

* 作用:为属性赋予初始值

* 构造方法的特点:类中不写,jvm自动创建无参构造,一旦写了任意的构造方法,jvm将不会自动创建

* 继承中构造方法的执行顺序

* 在子父类中,创建子类对象,先调用父类的无参构造,再调用子类无参构造

* 调用子类的有参构造,会先调用父类无参,然后才是子类有参

局部代码:定义在方法语句中,public void test(){}等,只在调用的时候执行

* 构造代码块:定义在成员位置(类中),{//代码},在类new的时候执行(new几次就执行几次)

* 且优先于无参构造方法的执行

* 静态代码块:定义在成员位置,static{//代码}。优先执行,哪怕实例多个对象(new),也就只有在实例第一个对象时才会执行一次

*

* 执行顺序:静态代码块 —— 构造代码块 —— 无参构造方法 —— (被调用时才执行)局部代码块


6.this

* A:this代表所在类的对象引用(方法被哪个对象调用,this就代表哪个对象

* B:成员变量和局部变量重名时使用,如 this.num = num。this.num 表示当前对象的数据域变量 num,而 num 表示方法中的局部变量。

* C:可以用于调用当前类的构造方法,并且必须是方法的第一条语句。如:this(); 调用默认构造方法。this(参数); 调用带参构造方法。


7.成员变量和局部变量

public class Test{

int x;//成员变量

public void test(){

int y;//局部变量

}

* 成员变量和局部变量的区别

* A:位置不同————成员变量在方法外,类中;局部变量在方法中

* B:在内存的位置不同————成员变量:堆里;局部变量:栈里

* C:生命周期不同————成员变量:随对象的创建而存在;局部变量:随方法的调用而存在,随方法调用完毕而消失

* D:初始值不同————成员变量:有默认值(不用初始化);局部变量:没有默认值,必须定义初始化值(或直接赋值)

//堆,栈,方法区,常量池,
//静态常量、变量的命名可与非静态的常量、变量相同

* 静态方法不能直接调用非静态的数据
* 局部变量和全区变量的区别
* 1.作用域不同,局部变量的作用域,仅限于当前代码块
* 2.全局变量,属于类的属性,作用域为当前类
*
* Static关键字:用来修饰类、变量、方法。一开始就放在了方法区
* jvm执行.class的时候,就将其(static定义的对象)定义在方法区
* 在类加载的时候就初始化(分配内存)了变量(或常量)
* 因此执行效率要比非静态高,同时更占内存
* 所有局部变量都在栈里开辟空间,所有new的都在堆里开辟空间


8.匿名对象

匿名对象 new Student

* System.out.println(new Student().name="小明");

* 匿名对象是对象的简化形式

* 匿名对象两种使用情况

* 当对象方法使用进行一次调用时

* 匿名对象可以作为实际参数进行传递

原文地址:https://www.cnblogs.com/bkytep/p/9614046.html