JAVA的简单了解
程序员文章站
2024-03-18 11:30:40
...
- hello world
- 特性
- 名词
- 标识符
- 修饰符
- 变量
- 数组
- 枚举
- 关键字
- 注释
- 继承
- 接口
- 源文件声明规则
- 转义字符序列
- 自动类型转换
- 运算符
- 运算符优先级
- 结构
1. hello world
- 文件名需与类名一致。如,HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
- javac:后跟java文件名,将java源文件编译为class字节码文件。如,javac HelloWorld.java
- java:后跟类名,不要加.class。如,java HelloWorld
2. 特性
- Java不使用指针,而是引用,提供自动的废料手机,程序猿不必为内存管理而担忧
- 支持类之间的单继承,接口之间的多继承,支持类与接口之间的实现机制(implements),全面支持动态绑定
- 支持Internet应用的开发
- Java编译器用Java实现,java的运行环境用C实现
- 线程必须由Thread类或其子(孙)类来创
3. 名词
-
对象:类的一个实例,有状态和行为(如我,你)
- 软件对象的状态就是属性,行为通过方法体现
- 属于引用数据类型
- 类:一个模板,描述一类对象(如男孩、女孩)
- 方法:行为
- 一个类可以有多个方法
- 每个类都有构造方法,构造方法的名称必须与类同名
- 实例变量:每个对象都有独特的实例变量
- 大小写敏感
- 类名:首字母大写,如MyFirstJavaClass
- 方法名:小写字母开头,如myFirstMethod
- 源文件名:必须和类名相同,加.java
- 主方法入口:所有的Java程序由
public static void main(String[] args)
方法开始执行
4. 标识符
- 以字母、美元符($)或下划线(_)开始
- 首字符之后可以是数字
- 关键字不能用作标识符
- 大小写敏感
5. 修饰符
- 访问控制修饰符
- default(缺省):同一包内可见
- protected:对同一包内的类和所有子类可见。不能修饰类
- private:同一类内可见。不能修饰类。隐藏类的实现细节和保护类的数据。
- public:对所有类可见
- 非访问控制修饰符:
-
final
- 修饰的方法可以被子类继承,但不能被继承类重新定义
- 修饰的变量为常量,不可修改
- final类不能被继承
-
abstract
- 创建抽象类和抽象方法,为了将来对该类进行扩充
- 抽象类不能用来实例化对象
- 一个类不能同时被abstract和final修饰
- 如果一个类包含抽象方法,那么该类一定要声明为抽象类
- 抽象类可以包含抽象方法和非抽象方法
- 抽象方法是一种没有任何实现的方法,具体实现由子类提供
- 抽象方法不能被声明成final和static
- 任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类
- 抽象方法的声明以分号结尾,如
public abstract sample();
- strictfp
-
static
- 静态变量:也成类变量
- 静态方法:不能使用类的非静态变量
- synchronized:声明的方法同一时间只能被一个线程访问
- transient:用来预处理类和变量的数据类型
- volatile:修饰的成员变量发生变化时,会强制线程将变化值回写共享内存,在任何时刻,两个不同的线程总是看到某个成员变量的同一个值
-
final
6. 变量
- 申请内存来储存值
- 内存管理系统根据变量类型为变量分配储存空间,分配的空间只能用来储存该类型变量
-
局部变量
- 在方法、构造方法或语句块中定义
- 变量声明和初始化都在方法中,方法结束后自动销毁
- 没有默认值,必须初始化后才可使用
- 不能用修饰符
-
类变量(静态变量)
- 在类中,方法体、构造方法之外
- 必须声明为static类型
- 无论一个类穿件多少对象,类只拥有一份拷贝
- 程序开始时创建,程序结束时销毁
- 大多数静态变量声明为public类型
- public static final类型是建议使用大写字母
-
成员变量(非静态变量)
- 定义在类中,方法体之外
- 在创建对象的时候实例化
- 可以被类中方法、构造方法、特定类的语句块访问
- 在对象创建时创建,在对象销毁时销毁
- 一般把实例变量设为私有
- 具有默认值
- 可通过变量名访问,但在静态方法以及其他类中,使用完全限定名
7. 数组
- 属于引用数据类型
- 保存多个同类型变量
- 数组的元素类型和数组的大小都是确定的,处理数组元素通常使用基本循环或foreach循环
- 声明:
dataType[] arrayRefVar
- 创建数组:
arrayRefVar = new dataType[arraySize]
- 声明和创建一起:
dataType[] arrayRefVar = new dataType[arraySize]
- 还可以:
dataType[] arrayRefVar = {value0, value1, ...}
- 多维数组:
type arrayName = new type[行数][列数]
8. 枚举
- 限制变量只能是预先设定的值
- 枚举可以单独声明或声明在类里面
class People {
enum PeopleDepth{ DEEP, SHALLOW}
PeopleDepth depth;
}
9. 关键字
- 不能用于常量、变量和任何标识符的名称
- 访问控制
- private - 私有
- protected - 受保护
- public - 公共
-
修饰符
- abstract - 抽象
- class - 类
- extends - 继承
- final - 最终值,不可改变
- implements - 实现
- interface - 接口
- native - 本地(非Java实现)
- new - 新建
- static - 静态
- strictfp - 严格精准
- synchronized - 线程同步
- transient - 短暂
- volatile - 易失
-
程序控制
- break - 跳出循环
- case - 定义一个值供switch选择
- continue - 继续
- default - 默认
- do - 运行
- else - 否则
- for - 循环
- if - 如果
- instanceof - 实例
- return - 返回
- switch - 根据值选择执行
- while - 循环
- 错误处理
- assert - 断言表达式是否为真
- catch - 捕捉异常
- finally - 有无异常都执行
- throw - 抛出一个异常
- throws - 声明一个异常可能被抛出
- try - 捕捉异常
- 包
- import - 引入
- package - 包
-
基本类型
- boolean - 布尔型,1位,只有两个取值:true和false(默认值false)
- byte - 8位、有符号,以二进制补码表示的整数(-128~127)
- char - 一个单一的16位Unicode字符(\u0000~\uffff,即0~65535)
- double - 64位,默认值0.0d
- float - 32位,默认值0.0f
- int - 32位,默认值为0
- long - 64位,默认值为0L
- short - 16位(-32768~32767)
- null
- 变量引用
- super - 父类,超类
- this - 本类
- void - 无返回值
- 保留关键字
- goto
- const
10. 注释
/*
* 多行注释的示例
* 多行注释的示例
*/
// 单行注释
/* 也是单行注释 */
11. 继承
- 重用已存在类的方法和属性,不用重写代码。
- 被继承的类成为超类(super class),派生类成为子类(subclass)。
- 父类中声明为public的方法在子类中必须为public
- 父类中声明为protected的方法在子类中要么声明为protected,要么public
- 父类中声明为private的方法,不能被继承
- final修饰的类不能被继承
12. 接口
- 只定义派生要用到的方法,方法的具体实现完全取决于派生类。
13. 源文件声明规则
- 一个源文件只能有一个public类,可以多个非public类
- 源文件名称应该和public类的类名保持一致
- 如果一个类定义在某个包中,那么package语句应该在源文件的首行
- importy应该放在类定义之前,package语句之后
14. 转义字符序列
- \n - 换行
- \r - 回车
- \f - 换页
- \b - 退格
- \0 - 空字符
- \s - 字符串
- \t - 制表符
- \” - 双引号
- \’ - 单引号
- \ - 反斜杠
- \ddd - 八进制字符
- \uxxxx - 16进制Unicode字符
15. 自动类型转换
- 转换从低级到高级 byte,short,char -> int -> long -> float -> double
- 不能对布尔型进行类型转换
- 高级转低级必须使用强制类型转换
- 可能溢出或损失精度
- 浮点数转整数,不是四舍五入,是舍弃小数
16. 运算符
- 算术运算符
- +
- -
- *
- /
- % - 取模
- ++
- –
- 关系运算符(返回true或false)
- ==
- !=
- >
- <
- >=
- <=
- 位运算符
- & - 按位与
- | - 按位或
- ^ - 按位异或
- ~ - 按位补
- << - 按位左移
- >> - 按位右移
- 逻辑运算符
- &&
- ||
- !
- 赋值运算符
- =
- +=:加和赋值操作符
- -=:减和
- *=:乘和
- /=:除和
- (%)=:取模和
- <<=:左移位赋值运算符
- >>=:右移位
- &=:按位与
- ^=:按位异或
- |=:按位或
- 其他运算符
-
?:
:条件运算符 -
instanceof
:variable instanceof type
-
17. 运算符优先级
- 优先级从高到低排序,其中关联性只有 一元、条件、赋值 是右到左,其他都是左到右
- 后缀(
() [] .
)→一元(++ -- ! ~
)→乘性(* / %
)→加性(+ -
)→移位(>> <<
)→关系(> >= < <=
)→相等(== !=
)→按位与(&
)→按位异或(^
)→按位或(|
)→逻辑与(&&
)→逻辑或(||
)→条件(?:
)→赋值(= += -= *= /= %= >>= <<= &= ^= |=
)→逗号(,
)
18. 结构
- 顺序结构
-
循环结构
- while
- do…while:至少执行一次
- for
for(初始化;布尔表达式;更新)
for(声明语句 : 表达式)
-
分支结构
- if
- if..else
- if..else if…else
- if…(if…else)else
- switch:判断一个变量与一系列值中某个值是否相等
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
default : //可选
//语句
}
上一篇: Python 异常处理 与 约束 详解
下一篇: 数据结构——顺序栈