一、标识符及字符集
Java语言规定标识符是以字母、下划线"_"或美元符号"$"开始,随后可跟数字、字母、下划线或美元符号的字符序列。Java标识符大小写敏感,没有长度限制,可以为标识符取任意长度的名字,但关键字不能作为标识符。为增强程序可读性,Java作如下的约定:
1.类、接口:通常使用名词,且每个单词的首字母要大写
2.方法:通常使用动词,首字母小写,其后用大写字母分隔每个单词
3.常量:全部大写,单词之间用下划线分隔
4.变量:通常使用名词,首字母小写,其后大写字母分隔每个单词,避免使用$符号。
Java 语言使用国际字符集(Unicode)。Unicode字符集定义了一套国际标准字符集。通常的ASCII码是8位的,而Unicode字符集中的每个字 符占16位,即2个字节,整个字符集共包括65336个字符,兼容ASCII,排在Unicode字符集最前面的256个字符就是ASCII码。 Unicode除了可以表示256个ASCII码外,还可以表示汉字、拉丁语、希腊字母、朝鲜语等。
Java标识符总结:1.由字母、数字、_或$组成,不能以数字开头;2.严格区分大小写;3.长度不限
二、关键字
Java常用关键字列表如下:
关键字 |
含义 |
Abstract |
用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承。一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现 |
Boolean |
布尔类型,只有true或者false |
Break |
停止,并跳出本层循环 |
Byte |
8bit (位),也就是8个1/0表示,即二进制 |
Case |
用来定义一组分支选择,如果某个值和switch中给出的值一样,就会从该分支开始执行。 |
Catch |
用来声明当try语句块中发生运行时错误或非运行时异常时运行的一个块。 |
Char |
用来定义一个字符类型 |
Class |
类 |
Const |
在Java中,const是作为保留字以备扩充,同样的保留字以备扩充还有goto.你可以用final关键字.final也可以用于声明方法或类,被声明为final的方法或类不能被继承。一般C里是const 对应java用final |
Continue |
用来打断当前循环过程,从当前循环的最后重新开始执行,如果后面跟有一个标签,则从标签对应的地方开始执行。 |
Default |
配合switch跟case使用,但case中没有找到匹配时,则输出或者为default后面的语句。 |
Do |
用来声明一个循环,这个循环的结束条件可以通过while关键字设置 |
Double |
用来定义一个double类型的变量 |
Else |
如果if语句的条件不满足就会执行该语句。 |
Extends |
extends 继承 类X 通过extend 类Y来添加功能,或者添加变量,或者添加方法,或者覆盖类Y的方法。一个接口extends另外一个接口来添加方法。 |
False |
假的 |
Final |
一个Java语言的关键字。你只能定义一个实体一次,以后不能改变它或继承它。更严格的讲:一个final修饰的类不能被子类化,一个final修饰的方法不能被重写,一个final修饰的变量不能改变其初始值。 |
Finally |
用来执行一段代码不管在前面定义的try语句中是否有异常或运行时错误发生。 |
Float |
用来定义一个浮点数变量 |
For |
用来声明一个循环。程序员可以指定要循环的语句,推出条件和初始化变量。 |
Goto |
虽然为Java关键字,但是仅在C语言里面使用,Java不提供Goto语句 |
If |
Java编程语言的一个关键字,用来生成一个条件测试,如果条件为真,就执行if下的语句。 |
Implements |
Java(TM)编程语言的一个关键字,在类的声明中是可选的,用来指明当前类实现的接口。 |
Import |
Java(TM)编程语言的一个关键字,在源文件的开始部分指明后面将要引用的一个类或整个包,这样就不必在使用的时候加上包的名字。 |
Instaceof |
一个二操作数的Java(TM)语言关键字,用来测试第一个参数的运行时类型是否和第二个参数兼容。 |
Int |
Java(TM)的一个关键字,用来定义一个整形变量 |
Interface |
Java(TM)的一个关键字,用来定义一系列的方法和常量。它可以被类实现,通过implements关键字。 |
Long |
用来定义一个long类型的变量 |
Native |
本地方法。 |
New |
用来创建一个新的方法 |
Null |
当String类型没赋值时,该变量的值为Null |
Package |
包的意思 |
Private |
用在方法或变量的声中。它表示这个方法或变量只能被这个类的其它元素所访问。 |
Protected |
在方法和变量的声明中使用,它表示这个方法或变量只能被同一个类中的,子类中的或者同一个包中的类中的元素所访问。 |
Public |
在方法和变量的声明中使用,它表示这个方法或变量能够被其它类中的元素访问。 |
Return |
用来结束一个方法的执行。它后面可以跟一个方法声明中要求的值。 |
Short |
用来定义一个short类型的变量。 |
Static |
用来定义一个变量为类变量。类只维护一个类变量的拷贝,不管该类当前有多少个实例。"static" 同样能够用来定义一个方法为类方法。类方法通过类名调用而不是特定的实例,并且只能操作类变量。 |
Super |
父类 |
Switch |
是一个选择语句,与case,default,break一起使用。 |
Synchronized |
线程同步 |
This |
用来代表它出现的类的一个实例。this可以用来访问类变量和类方法。 |
Threadsafe |
|
Throw |
允许用户抛出一个exception对象或者任何实现throwable的对象 |
Throws |
用在方法的声明中来说明哪些异常这个方法是不处理的,而是提交到程序的更高一层。 |
Transient |
用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。 |
True |
真的 |
Try |
用来定义一个可能抛出异常语句块。如果一个异常被抛出,一个可选的catch语句块会处理try语句块中抛出的异常。同时,一个finally语句块会被执行,无论一个异常是否被抛出。 |
Void |
用在Java语言的方法声明中说明这个方法没有任何返回值。"void"也可以用来表示一句没有任何功能的语句。 |
volatile |
用在变量的声明中表示这个变量是被同时运行的几个线程异步修改的。 |
while |
用来定义一段反复执行的循环语句。循环的退出条件是while语句的一部分。 |
分类如下:
1.访问控制:private 私有的 protected 受保护的 public 公共的
2.类、方法和变量修饰符 abstract 声明抽象 class 类 extends 扩允,继承 final 终极,不可改变的implements实现 interface 接口 native 本地 new 新,创建 static 静态 strictfp 严格,精准synchronized 线程,同步 transient 短暂 volatile 易失
3.程序控制语句 break 跳出循环 continue 继续 return 返回 do 运行 while 循环 if 如果 else 反之 for 循 instanceof 实例 switch 开关 case 返回开关里的结果 default 默认
4.错误处理 catch 处理异常 finally 有没有异常都执行 throw 抛出一个异常对象
throws 声明一个异常可能被抛出 try 捕获异常
5.包相关import 引入 package 包
6.基本类型 boolean 布尔型 byte 字节型 char 字符型 double 双精度 float 浮点 int 整型 long 长整型 short 短整型 null 空 true 真 false 假
7.变量引用 super 父类,超类 this 本类 void 无返回值
注意:1、所有的java关键字都是小写的 2、goto 和const 是保留关键字,在java 中没使用3、strictfp 和volatile 不常用; sizeof 、then 不是关键字。
8.true,false,null 不是严格意义上的关键字,而是literals 。
9.线程相关的 Synchronized Threadsafe volatile
三、运算符
Java基 本 的 运 算 符 按功能分有 下 面 几 类 :
1.算 术 运 算 符 (+,-,*,/,%,++,--) Java对 加 运 算 符 进 行 了 扩 展 ,使 它 能 够 进 行 字 符 串 的连 接,如 "abc"+"de",得到 串 "abcde"。与 C、 C++不 同 ,对 取 模 运 算 符 %来 说 ,其 操 作 数 可 以为浮点 数 , 如37.2%10=7.2。i++与 ++i的 区 别:i++在 使 用 i之 后 ,使 i的 值 加 1,因 此 执 行 完 i++后 ,整 个 表达式的 值 为 i,而 i的 值变 为 i+1;++i在 使 用 i之 前 ,使 i的 值 加 1,因 此 执 行 完 ++i后 ,整 个 表达式和 i的 值 均 为 i+1。
2.关 系 运 算 符 (>,<,>=,<=,==,!=)该运算符的特点是:运算完的结果,要么是true,要么是false。Java中 ,任 何 数 据 类 型 的 数 据 (包 括 基 本 类 型 和 组 合 类 型)都可 以 通 过 ==或!=来 比 较 是 否 相 等 (这 与 C、 C++不 同 )。关 系 运 算 符 用 来 比 较 两 个 值 ,返 回 布 尔 类 型 的值true或 false,而不是C、C++中 的 1或 0。
3.布 尔 逻 辑 运 算 符 (& | ^ ! && ||)
逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。
&: 只有两边都为true结果是true。否则就是false。
|:只要两边都为false结果是false,否则就是true
^:异或:和或有点不一样。
两边结果一样,就为false。
两边结果不一样,就为true.
& 和 &&区别: & :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
4.位 运 算 符 (>>,<<,>>>,&,|,^,~ ) 用于操作二进制位的运算符,如2*8 = 2<<3;。>>>(无符号右移)
5.赋 值 运 算 符 (= += -= *= /= %=)
6.条 件 运 算 符 ( ?:)
7.其 它 (包 括 分 量 运 算 符 · ,下 标 运 算 符 [],实 例 运 算 符 instanc eof,内 存 分 配运 算 符 new,强 制 类 型 转 换 运 算 符 (类 型 ), 方 法调 用 运 算 符 () 等 )
例子:对两个变量的数据进行互换。不需要第三方变量。
int a = 3,b = 5;-->b = 3,a = 5;
a = a + b; a = 8;
b = a - b; b = 3;
a = a - b; a = 5;
a = a ^ b;//
b = a ^ b;//b = a ^ b ^ b = a
a = a ^ b;//a = a ^ b ^ a = b;
Java *有 54 种运算符,按优先级可以分为 14 级:
优先级 操作符 含义 关联性 用法
----------------------------------------------------------------
1 [ ] 数组下标 左 array_name[expr]
. 成员选择 左 object.member
( ) 方法参数 左 method_name(expr_list)
( ) 实例构造 左 class_name(expr_list)
++ 后缀自增 左 lvalue++
-- 后缀自减 左 lvalue--
2 ++ 前缀自增 右 ++rvalue
-- 前缀自减 右 --lvalue
~ 按位取反 右 ~expr
! 逻辑非 右 !expr
+ 一元加 右 +expr
- 一元减 右 -expr
3 ( ) 强制转换 右 (type)expr
new 对象实例化 右 new type()
new type(expr_list)
new type[expr]
4 * 乘 左 expr * expr
/ 除 左 expr / expr
% 求余 左 expr % expr
5 + 加 左 expr + expr
- 减 左 expr - expr
+ 字符串连接 左 strExpr + strExpr
6 >> 有符号右移 左 expr >> distance
>>> 无符号右移 左 expr >>> distance
7 < 小于 左 expr < expr
<= 小于等于 左 expr <= expr
> 大于 左 expr > expr
>= 大于等于 左 expr >= expr
instanceof 类型比较 左 ref instanceof refType
== 等于 左 expr == expr
!= 不等于 左 expr != expr
8 & 整数按位与 左 integralExpr & integralExpr
& 布尔与 左 booleanExpr & booleanExpr
9 ^ 整数按位异或 左 integralExpr ^ integralExpr
^ 布尔异或 左 booleanExpr ^ booleanExpr
10 | 整数按位或 左 integralExpr | integralExpr
| 布尔或 左 booleanExpr | booleanExpr
11 && 逻辑与 左 booleanExpr && booleanExpr
12 || 逻辑或 左 booleanExpr || booleanExpr
13 ? : 条件运算 右 booleanExpr ? expr : expr
14 = 赋值 右 lvalue = expr
*= 乘赋值 右 lvalue *= expr
/= 除赋值 右 lvalue /= expr
%= 模赋值 右 lvalue %= expr
+= 加赋值 右 lvalue += expr
+= 字符串连接赋值 右 lvalue += expr
-= 减赋值 右 lvalue -= expr
<<= 左移赋值 右 lvalue <<= expr
>>= 有符号右移赋值 右 lvalue >>= expr
>>>= 无符号右移赋值 右 lvalue >>>= expr
&= 整数按位与赋值 右 lvalue &= expr
&= 布尔与赋值 右 lvalue &= expr
|= 整数按位或赋值 右 lvalue |= expr
|= 布尔或赋值 右 lvalue |= expr
^= 整数按位异或赋值 右 lvalue ^= expr
^= 布尔异或赋值 右 lvalue ^= expr
运算符不但有优先级,还有关联性。上表中关联性为"左"表示该表达式从左边开始进行运算;关联性为"右"表示该表达式从右边开始进行运算。
四、流程控制语句(If 、 switch、 do while、 while、 for、break、continue)
1. 当判断数据范围,获取判断运算结果boolean类型时,需要使用if;当判断固定个数的值的时候,可以使用if,也可以使用switch。但是建议使用switch,效率相对较高。
switch(变量){
case 值:要执行的语句;break;
…
default:要执行的语句;
}
工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了就执行哪个case后面的语句,如果没有相同的则执行default后面的语句;
细节:1):break是可以省略的,如果省略了就一直执行到遇到break 为止;
2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种;
3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。
2.当某些语句需要执行很多次时,就用循环结构。
while和for可以进行互换。区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。
3.break:作用于switch ,和循环语句,用于跳出,或者称为结束。break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。
4.continue:只作用于循环结构,继续循环用的。作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。