天天看点

JavaSE基础(一)

1.变量

※(基本类型默认为0,引用类型默认为空)

基础类型8种(1248按字节分)(只有这八种不属于类)

1位.byte ,boolean byte -126到125 boolean右边一位有效

2位.short,char short无符号整数(不要位运算)

char 系统编码及字符位置(两种形态),表示是字符,用单引号,双引号是字符串String

4位.int float int整形(整数运算类型) float单精度小数(不倾向于运算)

8位.long double long长整形 double双精度小数(小数运算类型)

对应的引用类型,转换方法,类型常量(可以理解为包装类,服务于基础类型)

转换方法 int aaa = Integer(“aaaaa”);将字符串转换成integer类型,再转换成int类型

类型常量 例如integer.size

Byte Boolean

Short Character

Integer Float

Long Double

引用类型,全部继承自Object

指针操作:

变量赋值=指针复制(基本类型是值复制)

方法参数进入,返回=指针复制

对象等于null=移除指针

new 新对象=创建指针

垃圾回收

基本类型主要针对有效范围

引用类型主要判断指针关联,是否有指针指向这片区域

java并不能靠代码掌控垃圾回收和线程的精确控制

1.让a=null,更快的垃圾回收

2.finalize()方法通知已经可以回收

2.虚拟机(容器)

变量栈(基本类型值,引用类型指针(地址)),变量堆(引用类型数据存储区域,又叫对象数据区域),方法栈

3.变量

类型 变量名=值;

1.局部变量(有效范围属于这个语句块,上级大括号有效),临时性变量

2.实例变量 成员变量,定义在类里面(有效范围当前类内有效)表示对象特征。

对象属性

多个方法共用

3.参数变量(实参,形参) 方法内有效,方法运行的必然条件

4.返回值

5.静态变量,全局变量,全部范围(用来做通用设置的,多个类共用)

变量用 static final +类型 来修饰,即为全局变量

6.静态常量,全部范围,方法参数标注(比如font方法)

Font f=new Font(name,font.bold|font.italic,size)这里的style是静态常量

font(“”,Font.bold,size),中间的style参数是静态常量,静态常量很重要

扩展

static、final、static final的区别

final:

    final可以修饰属性,方法,类,局部变量(方法中的变量)

    final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。

    final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。

    final修饰的属性表明是一个常数(创建后不能被修改)。

    final修饰的方法表示该方法在子类中不能被重写;

    final修饰的类表示该类不能被继承。

    对于基本类型数据,final会将值变为一个常数(创建后不能被修改);但是对于对象句柄(亦可称作引用或者指针),final会将句柄变为一个常数(进行声明时,必须将句柄初始化到一个具体的对象。而且不能再将句柄指向另一个对象。但是,对象的本身是可以修改的。这一限制也适用于数组,数组也属于对象,数组本身也是可以修改的。方法参数中的final句柄,意味着在该方法内部,我们不能改变参数句柄指向的实际东西,也就是说在方法内部不能给形参句柄再另外赋值)。

static:

    static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类)

    static修饰的属性的初始化在编译期(类加载的时候),初始化后能改变。

    static修饰的属性所有对象都只有一个值。

    static修饰的属性强调它们只有一个。

    static修饰的属性、方法、代码段跟该类的具体对象无关,不创建对象也能调用static修饰的属性、方法等

    static和“this、super”势不两立,static跟具体对象无关,而this、super正好跟具体对象有关。

    static不可以修饰局部变量。

static final和final static:

    static final和final static语法和用法上没有任何区别,一般习惯static写在前面。

static final:

    static修饰的属性强调它们只有一个,final修饰的属性表明是一个常数(创建后不能被修改)。static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。

    static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用。

静态变量和实例变量的区别?

在语法定义上的区别:静态变量前要加static关键字,而实例变量前不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码文件,不用创建任何实例象,静态变量就会被分配空间,静态变量就可以被使用了。 总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

是否可以从一个static方法内部发出对非static方法的调用?

不可以。因为非static方法要与对象关联在一起,必须创建一个对象后,才可以在该对象上进行方法的调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,一个static方法被调用时,可能还没有创建任何实例对象,所以,一个static方法内部不可以发出对非static方法的调用。

4.对象间通讯

1.方法参数

2.static(不适合做对象之间的数据传输)

3.接口通知(重要)有一定复杂度,好处是即时发送,不用等方法结束

4.代理模式

5.方法

1.构造方法 创建实例,只能用于new后面

无返回信息,名称为类名

有参的构造方法,为了传参数

2.实例方法 行为方法

public void ddd(){}

3.静态方法 函数(代码过程的封装)

4.静态块 static{} 自动执行,类加载完成时执行一次

做配置信息加载,全局配置信息初始化

5.动态块 { } 也是自动执行,每个实例创建完成时执行一次

6.类

1.主类

2.包类(辅类),不加入任何修饰,默认friendly,同文件的其他类,不能加描述

3.子类(静态子类和非静态子类) 在类的里面创建的类

可以加static 也可不加,加上表示能被外界使用

绝大多数都是用静态子类

4.内部匿名类

7.访问操作符

1.public 全公开,在其他文件都能访问到这个类

2.friendly 友好的,包内全公开,没关键字

3.protected 有限公开, 包内全公开,包外子类可以访问

4.private 全私有,除了自身类,其他地方都访问不到

static 静态的(脱离实例运行)

变量,代表全局的

方法,函数

类,可直接使用的

final 常量的(不可变更的)

变量,常量(栈不能改)

基本类型 完全不能改

引用类型 不能改指针部分

方法,不可重写

类,不可继承

扩展:{

1、修饰类

  当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。

2、修饰方法

  如果只有在想明确禁止 该方法在子类中被覆盖的情况下才将方法设置为final的。即父类的final方法是不能被子类所覆盖的,也就是说子类是不能够存在和父类一模一样的方法的。

final修饰的方法表示此方法已经是“最后的、最终的”含义,亦即此方法不能被重写(可以重载多个final修饰的方法)。此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,将会导致子类中不能直接继承到此方法,因此,此时可以在子类中定义相同的方法名和参数,此时不再产生重写与final的矛盾,而是在子类中重新定义了新的方法。(注:类的private方法会隐式地被指定为final方法。)

3、修饰变量

修饰变量是final用得最多的地方,也是本文接下来要重点阐述的内容。

final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

  当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。本质上是一回事,因为引用的值是一个地址,final要求值,即地址的值不发生变化。

  final修饰一个成员变量(属性),必须要显示初始化。这里有两种初始化方式,一种是在变量声明的时候初始化;第二种方法是在声明变量的时候不赋初值,但是要在这个变量所在的类的所有的构造函数中对这个变量赋初值。

  当函数的参数类型声明为final时,说明该参数是只读型的。即你可以读取使用该参数,但是无法改变该参数的值。

}

8.面向对象(面向业务实施事物的开发思维的一种,任何事物都用数据描述)

类的定义:具体事物的抽象

对象特征:属性,特征,区别,无限-按(基本,需求,代价较小)

方法,行为,动词打头的方法名,弄清楚执行方法之后区别,这些区别就是改变的属性,自外向内发出的通知(以自身属性修改为目标,谁的属性变了就是谁的类,如果一个方法没有属性修改,那么完全可以变成静态的,成为一个函数。)

事件,对事的响应,自内向外发出的通知,本质就是接口,全部由方法发起

面向对象特征:

继承:本质就是复制

封装:访问范围封装public,可控访问

功能封装,方法的分类,该谁的事谁做

多态:方法重写,方法重载

面型对象描述:

公园