标识符
标识符用来表示变量、常量、类、方法、数组、文件、接口、包等元素名字。
Java语言中的标识符有字母、下划线、美元符号($)和数字组成
标识符必须遵循以下规则:
1、区分大小写
2、以字母、下划线或$符号开头,不能以数字开头
3、没有长度限制,标识符最多可以包含 65535个字符
4、不能使用Java中的关键字
关键字
关键字
abstract | 表明类或者成员方法具有抽象属性 |
assert | 断言,用来进行程序调试 |
boolean | 基本数据类型之一,声明布尔类型的关键字 |
break | 提前跳出一个块 |
byte | 基本数据类型之一,字节类型 |
case | 用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
char | 基本数据类型之一,字符类型 |
class | 声明一个类 |
const | 保留关键字,没有具体含义 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
do | 用在do-while循环结构中 |
double | 基本数据类型之一,双精度浮点数类型 |
else | 用在条件语句中,表明当条件不成立时的分支 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 基本数据类型之一,单精度浮点数类型 |
for | 一种循环结构的引导词 |
goto | 保留关键字,没有具体含义 |
if | 条件语句的引导词 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
int | 基本数据类型之一,整数类型 |
interface | 接口 |
long | 基本数据类型之一,长整数类型 |
native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
short | 基本数据类型之一,短整数类型 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循算术规范 |
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
switch | 分支语句结构的引导词 |
stnchronized | 表明一段代码需要同步执行 |
throw | 抛出一个异常 |
this | 指向当前实例对象的引用 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile | 表明两个或者多个变量必须同步地发生变化 |
while | 用在循环结构中 |
分隔符
分隔符:用于区分和分隔标识符、操作数、关键字、或两个语句。
常用的分隔符有以下7种:
圆括号 ():在定义和调用方法时使用,用来容纳参数列表;在控制语句或强制类型转换组成表达式中使用,用来表示执行或计算机的优先级。
花括号 {}:用来包括自动初始化数据时,赋给数组的值;也用来定义语句块、类、方法以及局部范围。
方括号 []:用来声明数组的类型,也用来表示数组的引用。
分号 ;:用来终止一个语句。
逗号 ,:在变量声明中,用来分隔变量表中的各个变量;在for控制语句中,用来将圆括号中的语句连接起来。
点 . :用来将软件包中的名字与其子包或类分隔,也用来调用引用变量的变量,也用来引用数组的元素。
下划线 _:广义的空白字符包括空格、换行、Tab制表符等,连续多个空格与一个空格的效果相同
注释
单行注释: //注释内容
多行注释: /* 注释内容 */
文档注释:
/** *注释内容 * */
整型
整型分为:字节型、短整型、整型、长整型
整数类型 类型占用位数取值范围byte8-2e7~2e7(-128~127)short16-2e15~2e15-1(-332768~32767)int32-2e31~2e31-1long64-2e63~2e63-1
浮点型
浮点类型是带有小数部分的数据类型,也称实型。
浮点型分为单精度和双精度,其本质没有区别,只是取值范围的大小差异。
浮点类型的取值范围 类型占用位数取值范围float32-3.4x10e38~3.4x10e38(精度为6~7位有效数字)double64-1.7x10e308~1.7x10e308(精度为14~15位有效数字)
单精度浮点型float后缀为:f /F 。如:3.4f / 3.4F
双精度浮点型double后缀为:d/D 。如:3.2d / 3.15D
布尔型
布尔型用于表达两个逻辑状态之一的值。
Java中的布尔类型变量是Boolean,取值只能为true和false两者之一。
Java中的布尔值不能与0、1相互转换。
字符类型
字符类型是char用于表示单个字符,如字母、数字、标点符号和其他符号。
Java使用Unicode字符集,char类型的数据均是16位,不管是中文还是英文,都占用两个字节。
字符类型常量用一对单引号括起来。如:'a' '2' '我'
也可以使用Unicode编码来表示字符值,用 \u开头的4个十六进制数表示。如:'\u0041'表示'A'
Java中有反斜杠(\)开头的字符,反斜杠将其后面的字符转变为另外的含义,称为转义字符
Java中常用的转义字符 转义字符Unicode含义\b\u0008Backspace (退格)\t\u0009Tab (制表符)\n\u000ALine feed (换行)\f\u000CFrom feed (换页)\r\u000DCarriage return (回车)\"\u0022Double quote (双引号)\'\u0027Single quote (单引号)\\\u005cBackslash (反斜杠)\ddd1~3位八进制数据所表示的字符\uxxxx十六进制的Unicode码字符
字符串类型
字符串是包含在 " "中的字符序列,序列中的字符的个数称为字符串的长度,长度为0的字符串为空串
字符串声明格式:String 变量名
String 变量名="赋予的值"
数据类型的转换
整型、字符型、浮点型数据可以混合运算。不同优先级类型的数据需要先转换为同一类型,再进行运算。
Java中类型的优先级由低级到高级分别为:(byte,short,char)->long->float->double
1、自动类型转换
当出现混合运算时,类型转换的一般原则是低优先级(位数少)的类型转换为高优先级(位数多)的类型,称作自动(隐式)类型转换。当某种类型的值赋给另一种类型的变量时,如果这两种类型是兼容的,就可以将低优先级类型的赋值给高优先级类型的变量。
如:byte a=10;
int i=a;
float f=a;
2、强制类型转换
若将高优先级的值赋给低优先级的变量
如:将long型值赋给int型变量,则可能造成信息的丢失,这是Java不能执行自动转换,编译器需要程序员通过强制(显式)类型转换的方式确定这种转换。
一般格式为:
(type)expresstion
如:float f=5.5F
short s=(short)f;
int i=(int)f+100;
常量
在执行程序过程中取值始终保持不变的量
如果在程序中多处用到某个特定值,则可以将其第一位常量。
常量有字面(Literal)常量和符号常量两种形式
字面常量是指其数值意义如同字面所表示的一样。
符号常量是用Java标识符表示一个常量,可以使用保留字定义符号常量,符号常量的一般格式如下:
<final><数据类型><符号常量标识符>=<常量值>
如:final int count=100;
常量只能赋值一次,为了与变量名区别,常量一般为大写
变量
在程序执行过程中取值可以发生变化的量。
变量是Java程序中用于标识数据的存储单元。
Java是强类型的语言,所有变量必须先声明再使用,变量定义的一般格式如下:
[修饰符]<数据类型><变量标识符>[=<初始值>,<变量标识符>=<初始值>,……];
如:int t;
double x=123;
算术运算符
Java中的算术运算符 操作数运算符运算范例结果一元
+正号+55-负号a=6;-a;-6二元+加b=5+6;11-减a=3-5;-2*乘a=3*5;15/除a=13/34%取模(求余数)a=13%31一元
++自增(前)a=6;b=++a;a=7;b=7;++自增(后)a=6;b=a++a=7;b=6;--自减(前)a=6;b=--a;a=5,b=5;--自减(后)a=6;b=a--;a=5;b=6;进行二元运算是,如果两个数的类型不同,将会首先自动进行类型转换
对两个整数进行除法操作时,所的结果为整数,小数部分将被丢弃
增量、减量运算符只能用于变量,不能用于常量和表达式
Java对加运算符 “+”进行了扩展,以用于对字符串的连接
关系运算符
关系运算符是比较两个数据之间的大于、小于或等于关系的运算,果返回逻辑值(TRUE或FALSE)。
在一个比较运算符两边的数据类型应该一致
Java中的关系运算符 操作数运算符运算范例结果二元>大于7>9false>=大于等于9>=9;9>=7;true<小于7<9true<=小于等于7<=9;9<=9;true==等于9==7false!=不等于9!=7true
布尔运算
布尔逻辑运算符主要完成操作数的布尔逻辑运算,结果为布尔值
Java中的布尔逻辑运算符 操作数运算符运算范例结果一元!逻辑非(NOT)!truefalse二元&非简洁与(AND)2>3&5<6false|非简洁或(OR)2>3|5<6true^逻辑异或(XOR)5>3^7>3false&&简洁与2>3&&5<6false||简洁或2>3||5<6true
&&与&运算结果是一样的。只有当两个操作数都为真时结果为真。
&&也称为短路与,即若运算符左端的表达式为假时,则整个表达式的值已经确定,运算符右端的表达式讲不需要被计算。||也是如此
&在任何情况下都要计算两边的表达式。|也是如此
当异或运算符^两端表达式的值都为TRUE或都为FALSE时,异或运算的结果为假,而当运算符两端表达式的值一个为TRUE另一个为FALSE时,异或运算为真。
位运算符
位运算符是对以二进制为单位的操作数的每一位进行操作,但运算的操作数和结果都是整型变量
Java中的位运算符 操作数运算符运算范例结果一元~按位取反~00011001(二进制形式)11100110<<按位左移3<<2(11或左移两位为1100)12>>按位右移5>>21>>>无符号右移位-5>>>30(无符号右移30位)3二元&按位与3&51|按位或3|57^按位异或3^56
赋值运算符
赋值运算符“=”用来把一个表达式的值赋给一个变量。
如果赋值运算符两边的类型不一致,当赋值运算符右侧表达式的数据类型比较左侧的数据类型优先级别低时,则打开门进入数据自动被转化为与左侧相同的高级数据类型,然后将值赋值给左侧的变量。当右侧数据类型比左侧数据类型优先级高时,则需要进行强制类型转换,否则会发生错误
Java中的赋值运算符 运算符运算范例结果=赋值a=8;b=3;a=8,b=3+=加等于a=8;a+=ba=11,b=3-=减等于a=8;b-=b;a=5,b=3*=乘等于a=8;a*=ba=24,b=3/=除等于a=8;a/=ba=2,b=3%=模除等于a=8;a%=ba=2,b=3
条件运算
条件运算符“?”是三元运算符,一般形式为:
表达式1?表达式2:表达式3
其中表达式1的值必须为布尔类型,若果结果为TRUE,则执行表达式2,表达式2的执行结果即为整个表达式的值。如果表达式1的结果为FALSE,则执行表达式3,表达式3的结果作为整个表达式的值
运算符优先级
对表达式进行运算时,要按照运算符的优先顺序从高到底进行,同级的运算符则按从左到右的顺序进行。
Java中的运算符的优先级顺序 序号运算符类型结合性1[] . ()(方法调用)数组、点运算、方法调用 从左到右2!、~、++、--、+(正)、-(负)、()(显示类型转化)、new一元 运算符从右到左3*、/、%乘除与模除从左到右4+、-加 减从左到右5<< >> >>>移位从左到右6< <= > >= instanceof关系运算符从左到右7== !=相等 或不相等从左到右8&按位 与从左到右9^按位异或从左到右10|按位或从左到右11&&逻辑与从左到右12||逻辑或从左到右13?:条件运算符从右到左14= += -= *= /= %= &= |= ^= <<= >>= >>>=赋值运算符从右到左
表达式
表达式 是由操作数和运算符 按一定 的语法形式 组成的用来表达某种运算或含义的符号序列
每个表达式经过 运算后 都会产生一个确定的值,称为表达式的值。表达式值的数据类型称为表达式的数据类型 ,一个常量或一个变量时最简单的表达式 。
表达式可以作为一个整体,也可以看成一个操作数参与到其他运算中,形成复杂的表达式。根据表达式中所使用的运算符和运算结果的不同,可以将表达式 分为算术表达式、关系表达式、布尔表达式、条件表达式及 字符串表达式等。
语句
Java程序由语句组成,每个语句是一个完整的执行单元,以分号结尾
语句块和作用域
语句块有一对{}以及其中的 语句组成,语句块中的语句可以有零行(空语句块)到多行,空语句块留待以后再添加相关语句。
任何可以使用 语句的地方都可以使用语句块,通常语句块出现在流程控制、类声明、方法的声明以及异常处理等场合。
每个语句看块定义了一个作用域,在作用域内定义的变量是局部变量,局部变量只有在对应的语句块内有可见性。
语句块可以嵌套 ,每创建 一个语句块,就创建一个新的作用域。
作用域嵌套时,外层作用域包含内层作用域,即外层作用域定义的变量在 内层作用域中可见,反之,内层作用域定义的变量对外层 作用域是不可见 的
输出
System.out 对象包含着多个向显示器 输出数据的方法
常用方法如下:
println()方法:向标准输出设备输出一行文本,并换行
print()方法:向标准输出设备输出 一行文本,但不换行
如:
System.out.println("Hello World")
输入
Java语言提供了多种获取用户输入的手段,一种方法是利用System.in 对象直接读取键盘输入
另一种方便的方法是 利用java.util.Scanner 间接地从System.in 读取键盘输入