Java词法基础

1.标识符组成字符——词法规则

2.保留字,简单数据类型变量的定义方法和常量表示方法及取值范围——数组和字符串

3.类型间的优先次序和自动转换规则,各数据类型间进行自动/强制转换的情况

4.运算符及优先关系——运算符和表达式

5.控制语句及语法规则

  一、词法规则

关键字

*->当前未被使用 **->使用于Java2
abstractdoubleintstrictfp**
booleanelseinterfacesuper
breakextendslongswitch
bytefinalnativesynchronized
casefinallynewthis
catchfloatpackagethrow
charforprivatethrows
classgoto*protectedtransient
const*ifpublictry
continueimplementsreturnvoid
defaultimportshortvolatile
doinstanceofstaticwhile
var(jdk10)record(jdk14)

标识符

1.字母(A~Z、a~z)、特殊符号($、_)和数字(0~9)

2.第1个符号不能为数字

3.不能为关键词、true、false、null

4.区分大小写

5.JDK9.0支持unicode字符变量名类名()      

二、数据类型

1.基本

(1)number:

integers:

a.字节整数 (byte, 8 bits): -128 ~127, 0
b.短整数 (short, 16 bits): -32768 ~ 32767, 0
c.整数 (int, 32 bits):        -2147483648 ~ 2147483647, 0
d.长整数 (long, 64 bits):  … …, 0L
实型 (real numbers): 浮点型 (有效位数不同)
a.单精度(float, 32 bits): 0.0F(1符号位,8位指数位,23位尾数)
b.双精度(double, 64 bits): 0.0D (1符号位,11位指数位,52位尾数)

(2)字符 (char, 16-bit Unicode字符): \u0000~\uffff

(3)布尔 (boolean): true, false

2.复合

数组(Array), 类(class), 接口(interface)

3.类型转换 (casting)

(1)一种类型->另一种类型

操作数->同种类型,然后运算

整数型、实数型、字符型

表达形式:   (类型) 操作数

(2)应用场合

二元运算符的二个操作数类型

表达式值与变量的类型

(3)方法

隐型: 自动(系统完成)

显型: 强制

三、常量与变量

1.常量

2.变量

定义

类型  变量名 [=初值][, 变量名[=初值] …]

类型: 基本数据类型或引用类型     

int          x, y, z;   

float       a, b;     

作用域Scope——变量使用范围

Java中 不允许局部变量的 嵌套定义

if ( ... ) {

    int i = 17;    

    ...

}

System.out.println("The value of i = " + i);

以下代码c允许,Java不允许

int i=10;

if ( ... ) {    

    int i = 17;    

    ... }  

带关键字final的变量——初始化后不能改变final int aFV = 0;

final修饰的量,必须在构造函数初始化
final修饰的静态成员变量必须在静态语句块初始化

四、运算符和表达式

1.运算符 

算术 (Arithmetic)

c相同整数相除返回整数 与c不同小数也可以模除

关系(Relational)

>、>=、<、<=、==、!=

逻辑(Logical)

&&,||, !  与c一样短路运算

位(Bitwise)

~,&,|,^

移位(Shift)

>>>(无符号右移,高位补0),  >>高位补符号位), <<低位补0),

条件(Conditional)

2.自增、自减运算符(一元):符号在前先自增/自减

3.优先级

后缀[] . (params) expr++ expr--
一元++expr --expr +expr -expr ~ ! 
构造/类型转换new (type)expr 
乘法 * / %
加法 + -
移位 << >> >>>
关系< > <= >= instanceof
相等 ==  !=
按位与&
按位异或^
按位或|
逻辑&&
逻辑||
条件?:
赋值= += -= *= /= %= &= ^= |= <<= >>= >>>= 

4.表达式

操作数(常量、变量和函数)

算术/关系/逻辑/赋值表达式

复合赋值运算

+=、   -=、   *=、 /=、%= <<=、>>=、&=、^=、|=
<变量> <复合赋值运算符> <表达式><变量> =<变量><运算符> (<表达式>)

五、控制语句

1.条件选择:if-else

2.switch/开关

switch语句结果必须是byte, char, short, int 类型,JDK 7发布版本中可以在switch语句的表达式中使用String对象

表达式的结果依次与每个case子句比较

break语句跳出switch语句,没有break则执行匹配以后的所有语句直到遇到break或者}

default子句是可选的,没有匹配的时候执行。没有default且没有匹配值则退出

3.循环控制

组成

循环初始状态 循环体 迭代因子(计数器的递增或递减) 控制表达式

while do-while for

4.循环语句中途退出

Java没有goto语句

break:

不带标号:从循环体内跳出至后面语句。 跳出当前循环体,不是跳出当前大括号对。循环嵌套时,break 语句只跳出当前循环。

带标号:label: 定义标号,跳出标号标志的循环体

六、数组(基本类型/类/接口)与字符串

1.数组是一种特殊对象(Object)

定义类型 (声明)

创建数组 (分配内存空间) : new

释放 (Java虚拟机完成)

2.字符串

String strName2 = new String("Egg");

在堆上创建一个新的 String 实例,复制了字符串常量池中的 "Egg" 字符串的内容。通过将 new String("Egg") 的结果赋值给 strName2(对象引用变量,指向堆上新创建的 String 对象。

字符串长度——str.length();

将数字添加到字符串

String strVar = "Mark" + (1+1);——Mark2

String strVar = "Mark" + 1+1;——Mark11

"+"拼接字符串问题:会产生一个新的String实例

对象生成需要内存空间和时间,不断生成String实例没有效率

How:StringBuffer的append方法替换"+"

3.字符串池——存放在程序中创建的所有字符串字面量

任何时候创建字符串字面量,系统会搜索字符串池查看是否存在

比较字符串对象 s1,s2,s3和s4分别是3个不同的哈希码
s1!=s2s3==s4

String s1=new String("hello");

String s2=new String("hello");

String s3="hello";

String s4 ="hello";

System.identityHashCode(Object x) 方法,返回对象哈希码——对象在内存中的唯一标识符

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值