本文已参与「新人创作礼」活动,一起开启掘金创作之路。
4. 基本数据类型与表达式
文字量:也叫文字常量,例如3.1415926 字符串采用Unicode编码 数据类型包括:
- 基本数据类型:整数类型(byte,short,int,long)、浮点类型(float,doule)、字符类型(char,Unicode,两个字节)、布尔类型(boolean)
- 引用类型:对象 基本类型速度快,对象类型速度慢。 常量的声明要用关键字final:final int x = 10;
5. 数组
数组是对象,需要动态初始化。先定义数组的名字(或者叫引用),然后用动态的方式去分配空间,然后初始化的。 数组对象可以赋值给Object类型的变量,在数组中可以调用类Object中的所有方法。
//int intArray[];
int[] intArray;
intArray=new int [10];
int ai[]=new int[10];
int a[]={22,33,44,55};
//a.length=4;
6. 类和对象的基本概念
多有类的顶上的超类是Object 在一个java源文件中,可以声明多个类,但是只能有一个类是public类,并且这个public类的名称必须和所在源文件的名称相同。通常不建议在一个源文件中定义多个class。 final关键字修饰的类不能派生出子类
6.1. 数据成员
6.1.1. 声明方式
static:这是一个静态成员变量(类变量) final:变量的值不能被修改 transient:变量不需要序列化(例如,不会被存到磁盘上) volatile:这是一个共享变量
6.1.2. 实例变量
实例变量是没有static修饰的变量,同一个类的每个对象都有这个变量,用于描述每个对象的属性。
6.1.3. 类变量
用static修饰,适用于:
- 类中所有对象都有相同的属性
- 经常需要共享的数据
- 系统中用到的一些常量值 调用方法:<类名|实例名>.<类变量名>
6.2. 方法成员
6.2.1. 声明方式
static:这是一个类方法(静态方法) final:这是一个终结方法 abstract:这是一个抽象方法(只有方法原型,没有方法实现)
6.2.2. 参数传递
- 值传递:参数类型为基本数据类型时
- 引用传递:参数类型为对象类型或数组时
- 可变长参数:使用省略号表示,其实质是数组。
6.3. 包(package)
一个包可以包含若干个类文件,还可以包含若干个包。 作用:
- 将相关的源代码文件组织在一起
- 类名的空间管理,利用包来划分名字空间可以避免类名冲突
- 提供包一级封装及存取权限的控制 包的命名:
- 每个包的名称必须独一无二
- Java中包名使用小写字母表示
- 建议将机构的Internet域名反序,作为包名的前导
- 可用下划线代替不可用于标识符的字符,或者和关键字区分(后缀下划线) 编译单元 java中以一个Java源代码文件为一个编译单元,由三部分组成:
- 所属包的声明(省略,则属于默认包)
- Import(引入包的声明),用于导入外部的类
- 自己定义的类和接口 一个编译单元汇总只能有一个public类,该类名与文件名相同。其他类往往是public类的辅助类,经过编译每个类都会生成一个class文件 系统库中很多常用的内容放在java.lang中,java编译器会自动为所有的程序引入java.lang这个包
6.4. 类的访问权限控制
静态成员方法不能直接使用非静态成员,需要实例化一个对象,再通过该对象来访问要访问的非静态成员变量或要调用的非静态成员方法。
| 类型 | private | 无修饰 | protected | public |
|---|---|---|---|---|
| 同一类 | 是 | 是 | 是 | 是 |
| 同一包中的子类 | 否 | 是 | 是 | 是 |
| 同一包中的非子类 | 否 | 是 | 是 | 是 |
| 不同包中的子类 | 否 | 否 | 是 | 是 |
| 不同包中的非子类 | 否 | 否 | 否 | 是 |
| 如果成员无修饰符(默认的),则表明是“friendly”,相应的成分可以被所在包中的各类访问 |
6.4.1. this关键字
如果方法内的局部变量(包括形参)名与类的实例变量名相同,则方法体内访问实例变量时需要this关键字。 public void setRadius(int radius){ this.radius=radius; }
6.5. 对象初始化
- 方法名与类名相同
- 不定义返回类型
- 通常被声明为公有的(public)
- 可以有任意多个参数
- 若未显式声明构造方法,编译器隐含生产默认的构造方法。调用默认构造方法时,数值变量被初始化为0,引用变量被初始化为NULL
6.6. 内存回收
无用对象:
- 离开了作用域的对象
- 无引用指向对象 java运行时系统通过垃圾收集器周期性地释放无用对象所使用的内存
6.6.1. 垃圾收集器
作为一个后台县城运行,通常在系统空闲时异步地执行