目录
关键字及标识符
变量
自动类型转换
强制类型转换
注释
运算符
运算符的优先级
关键字及标识符
Java中有一些具有特殊用途的词被称为关键字。关键字区分大小写。
关键字
abstract | boolean | break | byte | case | catch |
char | class | continue | default | do | double |
else | extends | false | final | finally | float |
for | if | implements | import | instanceof | int |
interface | long | native | new | null | package |
private | protected | public | return | short | static |
super | switch | synchronized | this | throw | throws |
transient | true | try | void | volatile | while |
Java中用来标识变量名、类名、类中的方法名和文件名的关键字叫做标识符。
使用标识符需要遵守的几点规则
1.标识符可以由字母、数字、下划线、美元符号组成,但是不能包含@、%、空格等其他特殊字符,不能以数字开头;
2.标识符不能使Java关键字和保留字,但可以包含关键字和保留字;
3.标识符大小写敏感,严格区分大小写;
4.标识符的命名要起到见名知意的作用,看到名字就能反映出它要表达的意思。
命名规范
1.标识符要符合语义信息;
2.包名命名的时候所有字母全部小写;
3.类名每个单词首字母大写,其他字母小写(驼峰命名法);
4.变量和方法命名:第一个单词小写,从第二个单词开始首字母大写;
5.常量名:所有字母大写,每个单词之间用"_"连接。
变量
变量是计算机语言中能储存计算结果或能表示值的抽象概念。变量可以通过变量名访问。Java中通过三个元素描述变量,分别是变量类型、变量名和变量值。
变量命名规则:变量命名使用驼峰命名规则,就是第一个单词小写,从第二个单词开始首字母大写;命名尽量简短且能清楚的表达变量的作用,做到见名知意;Java变量名命名严格区分大小写,但是对变量名长度没有限制。
变量的使用规则
变量需要先声明后使用;
变量使用时,可以声明变量的同时进行初始化,也可以先声明后赋值;
变量中每次只能赋一个值,但可以修改多次;
main方法中定义的变量必须先赋值,然后才能输出;
实际开发中变量名不建议使用中文,容易产生安全隐患,例如跨平台出现乱码。
常量
常量是一种特殊的变量,它的值被设定后在程序运行过程中不允许改变。
语法: final 常量名 = 值 ;(所有字母大写,每个单词之间用"_"连接)
程序中使用常量可以提高代码的可维护性。常量名一般使用大写字符。
局部变量
不是声明在类体括号里面的变量称之为局部变量(定义在函数方法或者形参列表中)。
局部变量没有默认初始化值,必须要先赋值后使用,否则无法通过编译;
局部变量的作用范围:定义开始到定义它的代码块结束;在同一范围内不允许两个局部变量名命名冲突。
静态变量、实例变量
Java中被 static 关键字修饰(static是静态修饰符)的变量我们称之为静态变量,没有被static关键字修饰的变量我们称之为实例变量。静态变量可以被类中的所有对象所共享,属于整个类所有而不是某个对象所有。静态变量可以直接使用类名方法访问,也可以使用对象名进行访问。
静态变量与实例变量的区别
静态变量前要加static关键字,而实例变量前则不加。(语法差异)
实例变量属于某个对象的属性,只有创建了实例对象它的实例变量才会被分配空间,这个实例变量才能被使用。
静态变量只属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,就可以被使用了。
实例变量必须创建对象后才可以通过对象来使用,静态变量则可以直接使用类名来引用。(程序运行时内存分配差异)
类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。(生命周期差异)
自动类型转换
自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。
自动类型转换需要满足的条件:
1.目标类型能与源类型兼容(例如double类型兼容int型,但是char型不兼容int型);
2.目标类型大于源类型(例如double类型长度为8字节,int类型长度为4字节,所以double类型的变量里直接可以存放int类型的数据,反之不可以)。
强制类型转换
强制转换类型:将高级别类型赋值给低级别类型时,必须进行强制类型转换。
在Java中,强制类型转换是为了防止程序员在不知情的情况下将不同的数据类型搞混淆。将一种类型的值赋给另一种类型的变量是很常见的,如果两种类型兼容则进行自动转换,如果两种类型不兼容则需要用到强制类型转换。
在Java中子类可以很自然地转换为父类,但是父类转换为子类需要进行强制类型转换。因为子类拥有比父类更多的属性、更强的功能,所以需要进行强制类型转换操作。
语法: (数据类型)数值
强制类型转换可能会造成数据或者精度丢失,需要多方考虑慎重使用。
注释
在我们的项目开发过程中我们需要给代码添加一些注释来描述某段代码的作用。Java中的注释有三种类型,分别是单行注释、多行注释和文档注释。注释是给开发人员看的,便于对代码的理解。
单行注释(//...):到本行结束所有字符会被编译器忽略。
多行注释(/*...*/):在/*...*/之间的所有字符会被编译器忽略。
文档注释(/**...*/):java特有的注释方式,在/**...*/之间所有的字符会被编译器忽略。
运算符
运算符是一种"功能符号",用来通知Java进行相关的运算。
Java语言中常用的运算符有算数运算符、赋值运算符、比较运算符和条件运算符。
算数运算符主要用于进行基本的算数运算,加减乘除等。自加自减运算只能用于操作变量,不能直接用于操作数值或常量。"%"用来取余,也叫"取模运算符"。
int i = 2 ; i ++ (i++ ——> i = i +1)
int i = 10 ; i-- (i-- ——> i = i-1)
算数运算符 | 名称 | 案例 |
+ | 加 | 1 + 1 = 2 |
- | 减 | 1 - 1 = 0 |
* | 乘 | 2 * 2 = 4 |
/ | 除 | 2 / 2 = 1 |
% | 取余 | 5 % 2 = 1 |
++ | 自加 | int i = 2 ; i ++ |
-- | 自减 | int i = 10 ; i-- |
赋值运算符指的是变量或常量指定数值的符号,例如可以使用 " = " 将右边的表达式结果赋值给左边的操作符。
赋值运算符 | 名称 | 案例 |
= | 赋值 | a = b+c 将b+c的值赋给a |
+= | 加等于 | a += b 就是 a = a+b |
-= | 减等于 | a -= b 就是 a = a-b |
*= | 乘等于 | a *= b 就是 a = a*b |
/= | 除等于 | a /= b 就是 a = a/b |
%= | 模等于 | a %= b 就是 a = a%b |
比较运算符可以用来判断两个数据的大小。
注意:>、<、>=、<=只支持左右两边操作数是数值类型;
== 、!= 两边操作数既可以是数值类型,也可以是引用类型。
逻辑运算符用来进行逻辑运算。
逻辑运算符 | 名称 | 案例 | 结果 |
&& | 与 | a&&b | 只有a、b都为true才返回true |
| | | 或 | a | | b | 当a、b有一个返回true,结果返回true |
! | 非 | !a | 当a=true,则!a=false |
^ | 异或 | a^b | 若a、b有且仅有一个为true,则返回true |
运算符的优先级
运算符的优先级就是在表达式中的运算顺序。优先级为1的优先级最高,11为优先级最低。
优先级 | 运算符 |
1 | ( ) |
2 | ! + - ++ -- |
3 | * / % |
4 | + - |
5 | < <= > >= |
6 | == != |
7 | ^ |
8 | && |
9 | || |
10 | ?= |
11 | = += -= *= /= %= |