Java SE: java standard edition
Java EE: java enterprise edition
Java ME: java micro edition
特点:
对象:对象是类的一个实例,有状态和行为。
类:模板,描述一类对象的行为和状态。
方法:方法就是行为,描述动作。
实例变量:状态由实例变量的值决定。
类名:首字母大写,如果多字母则驼峰。
方法名:小写字母开头,多字母则后面的字母驼峰
源文件名:源文件名与类名相同,已类名+.JAVA
主方法:public static void main(string[] args)开始执行
修饰符:
访问控制修饰符 : default, public , protected, private
非访问控制修饰符 : final, abstract, static, synchronized
变量:
局部变量:proivate
类变量(静态变量):static,可以直接使用
成员变量(非静态变量):public 必须实例后再使用
数组:堆上,可以保存多个同类型的变量。
枚举:设置好预先设定的值
关键字:
private:私有 public:公有 protected:受保护啊的 default:默认
abstract:抽象 class:类 extends:继承 final:最终的 implements:实现接口 interface:接口 native:本地 new:创建
static:静态 synchronized:线程同步 transient:短暂 volatile:短暂
instanceof实例
错误处理:
assert:断言,后面只能接true的,如果接false则会抛出一个Asserterror对象。用于调试,使用之前需要先打开断言功能。
catch:捕捉异常
finally:有没有异常都执行
throw:抛出一个异常对象
throws:声明一个异常可能被抛出
try:捕获异常
包:
package:导包
import: 引入
基本数据类型:
boolean
byte
char
double
float
int
long
short
变量引用:
super父类
this本类
void
变量:
局部变量:在方法内部被定义,方法结束后,变量就被销毁。
成员变量:在方法之外,创建对象的时候要实例化。
类变量:方法之外,声明为static类型。
构造方法:
构造方法与类同名,如果没有手动写,则编译器自动提供一个构造方法啊,一个类可以有多个构造方法。
创建对象:new
声明:声明对象,包括对象名称和类型
实例化:new
初始化:用new创建对象,调用构造方法来初始化对象:
Puppy myPuppy = new Puppy( “tommy” );
myPuppy为创建对象,Puppy为类名,初始化调用构造函数Puppy( “tommy” );
访问实例变量和方法:通过对象来访问成员变量和成员方法。
Java包:
import:引用
import java.io.*; 路径下的类
*:代表全部
源文件:
一个源文件只能有一个public类
一个源文件可以有多个非public类
源文件名与public类名一致
package在源文件的首行,类定义在包内
import位于package与类定义之间
内置数据类型:
byte: 8位,有符号,-128-127,默认为0
short:16位,有符号,-32768-32767,默认为0
int:32位
long:64位 long a =1000L
float:32位,单精度,默认为0.0f
double:双精度,64位,0.0d
boolean:true、false
char:16位unicode,\u0000-\uffff, 默认’u0000’
如char l = ‘A’
引用类型:
引用类型默认为NULL,类似于指针,声明后不能改类型,如对象和数组,默认为NULL。
常量:
final double PI = 3.1415927;
常量名一般大写,后面数字前缀 0 表示 8 进制,而前缀 0x 代表 16 进制。
\n 换行 (0x0a)
\r 回车 (0x0d)
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
变量:
public class Variable{
static int allClicks=0; // 类变量
String str="hello world"; // 实例变量 public void method(){ int i =0; // 局部变量 }
局部变量:
在方法内,没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
实例变量:
在类中,在方法,构造方法和语句块之外。在对象被实例化之后,实例变量的值就确定。对象创建的时候创建,对象被销毁的时候销毁。实例变量至少被一个方法引用,使得外部能获取实例变量的信息。
实例变量一般为私有的,仅在该类中可见;实例变量位公有的,其子类也可见。有默认值。
类变量:
静态变量,以static关键字声明,在方法之外。类变量声明为常量常用,其他不常用。在静态数据区,大多数声明为public。类变量声明为public static final时,类变量大写。
default:默认,同类同包子类可见,其他包不可见
private:在同一个类中可用
public:接口,对所有类可用
protected:同一包内的类和其子类可见
接口中变量默认为 public static final
接口中方法为 public
如果把 openSpeaker() 方法声明为 private,那么除了 AudioPlayer 之外的类将不能访问该方法;如果把 openSpeaker() 声明为 public,那么所有的类都能够访问该方法;如果我们只想让该方法对其所在类的子类可见,则将该方法声明为 protected。
请注意以下方法继承的规则:
父类中声明为 public 的方法在子类中也必须为 public。
父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
父类中声明为 private 的方法,不能够被子类继承。
final 方法可以被子类继承,但是不能被子类重写
final 修饰符通常和 static 修饰符一起使用来创建类常量。
abstract抽象
抽象类的唯一目的是为了将来对该类进行扩充。抽象类包括抽象方法和非抽象方法,抽象方法为没有实现,具体实现由子类实现,继承抽象类的子类必须实现父类的所有抽象方法,抽象方法已分号结束。
synchronized 同步
synchronized方法同一时间只能被一个线程访问。
transient
jvm跳过该变量,用于预处理类和变量的数据类型。
volatile
每次都从内存中读取数据,不同的线程总是一个值。
instanceof 检测接口/类是否为某个类型
类别 操作符 关联性
后缀 () [] . (点操作符) 左到右
一元 expr++ expr-- 从左到右
一元 ++expr --expr + - ~ ! 从右到左
乘性 * /% 左到右
加性 + - 左到右
移位 >> >>> << 左到右
关系 > >= < <= 左到右
相等 == != 左到右
按位与 & 左到右
按位异或 ^ 左到右
按位或 | 左到右
逻辑与 && 左到右
逻辑或 | | 左到右
条件 ?: 从右到左
赋值 = + = - = * = / =%= >> = << =&= ^ = | = 从右到左
逗号 , 左到右