1.关键字
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char(character) | const | continue |
default | do | double | else | extends |
final | finally | float | for | goto |
if | implements | import | instanceof | int |
interface | long | native | new | null |
package | private | protected | public | return |
short | static | strictfp | super | switch |
synchronized | this | throw | throws | transient |
try | void | volatile | while | class |
- 关键字基本都是小写字母组成
- Java语言规定关键字不能作为标识符
- 目前共有50个Java关键字。
其中,"const"和"goto"这两个关键字在Java语言中并没有具体含义。
Java语言把它们列为关键字。
只是因为"const"和"goto"是其他某些计算机语言的关键字。
2.标识符
Java对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。
简而言之就是给类,接口,方法,变量起名字。
标识符的命名规则
-
由字母、数字、下划线_ 和美元符号 $ 组成
-
不能以数字开头
-
区分大小写
-
不能是Java中的关键字
注意:
- Java不采用通常语言使用的ASCII字符集
- Java采用unicode这样的标准的国际字符集。因此,这里的字母的含义:英文、汉字等等。(不建议大家使用汉字来定义标识符!)
标识符的命名规范
-
驼峰式命名:方法 变量 schoolName
-
见名知意(使用有意义的英文单词)
-
类名首字母大写,变量名和方法名首字母小写
规则与规范:规则是必须遵守的,规范是应该做到的。
开发中常见的命名规范和规则
- 包(文件夹)
全部单词小写,公司域名反着写。 eg: com.huidao.www - 类或者接口
类:所有单词首字母大写 。 eg:SchoolName
接口:第一个字母为I,其余所有单词首字母大写。 eg:ISchoolName - 变量或者方法
首字母小写,其他字母大写,见名知意,满足驼峰命名法。
eg: main name shoolName - 常量
每个字母都大写,单词之间用_隔开。 eg :PI MAX_VALUE
3.注释
为什么注释
- 使代码可读性大大提高。
- 开发中工作项目的交接。
- 程序调试。
注释
-
单行注释 // (绿色)
-
多行注释 /* */ (绿色)
-
注意:多行注释不能嵌套
-
文档注释 /** */ (蓝色)
注意:
- 文档注释可以使用javadoc工具来生成API,后续会讲解。
- 初学者一定要养成良好的习惯,先写注释,再写代码。
- 在开发当中注释不能随便删。
4.常量与变量
定义
在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量
介绍
-
Java是一种强类型语言,每个变量都必须声明其类型。
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
-
变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式为:
type varName [=value] [{,varName[=value]}] ; -
注意事项:
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
变量名必须是合法的标识符。
eg:
int age=20;
age=21;
String name=“小明”;
5.基本数据类型与转化
Java是一种强类型语言
- 常量是有数据类型的
- 变量都必须声明其数据类型。
整型常量
- 十进制整数,如:99, -500, 0
- 八进制整数,要求以 0 开头,如:015
- 十六进制数,要求 0x 或 0X 开头,如:0x15
整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ‘(建议使用大写,小写容易误认为数字1),如:
long a = 55555555; //不出错,在Int表示的范围内(21亿内)。
long b = 55555555555;//不加l出错,已经超过int表示的范围。
整型变量
浮点型数据类型
浮点类型常量
十进制数形式,例如:
3.14 314.0 0.314
科学记数法形式,如
314e2 314E2 314E-2
double f = 314e2; //31410^2–>31400.0
double f2 = 314e-2; //31410^(-2)–>3.14
浮点型变量
float类型:单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。
double类型:双精度类型 精度是float类型的两倍,绝大部分应用程序都采用double类型。
注意
浮点常量默认为double。要变为float,需在后面增加F/f. 如: 3.14F
浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
字符数据类型(2个字节)
- 单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的,“A”表示含有一个字符的字符串。
- char 类型用来表示在Unicode编码表中的字符。
- Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符;ASCII码占1个字节,可允许有128个字符(最高位是0),是Unicode编码表中前128个字符。
- Java 语言中还允许使用转义字符 ‘\’ 来将其后的字符转变为其它的含义,
char c2 = ‘\n’; //代表换行符 - char类型在内存中存储的是该字符的Unicode编码值,所以char类型可以当做int类型来处理。
布尔数据类型(一位,不是一个字节)
boolean类型有两个值,true和false
boolean 类型用来判断逻辑条件,一般用于程序流程控制
Java数据类型分为基本数据类型和引用类型
基本数据类型
注意事项:
1、整数常量默认是int类型,浮点数(小数)常量默认是double类型。
2、long,float类型需要加上后缀
例如:long l = 1000L;,float f = 12.5f;
引用数据类型
- 类(class)
- 接口(interface)
- 数组([])
注意:数组属于引用类型
字符串不是基本数据类型,属于引用数据类型
数据类型转换
自动(隐式)类型转换
自动类型转换:
byte → short → int → long → float → double
char ↗
byte,short,char相互之间不自动转换,他们参与运算首先转换为int类型。
强制类型转换
将范围大的类型赋值给范围小的类型,需要强制类型转换。
例如 将大水杯的水倒入小水杯中。
格式:强制类型转换格式:目标类型 变量名=(目标类型)(被转换的数据);
注意:强制类型转换可能出现精度的丢失和数据的溢出
例如:
int a;
double d = 12.5;
a = (int)d;//精度丢失
byte b = 129;
//造成数据溢出
表达式类型提升
当两个不同类型的数据参与运算时,范围小的数据类型默认会自动转换为范围大的数据类型之后再参与运算。
byte,short,char相互之间不转换,他们参与运算首先转换为int类型。
例如:
去年Java所占市场份额是20,今年增长的市场份额是9.8
int before = 20; //去年市场份额
double rise = 9.8; //增长的份额
int now = before + rise; //现在的份额
byte特例
该特例虽然右边为整型常量默认为int类型,左边是byte类型,属于大类型赋值给小类型,但是由于108属于-129-128之间,所以这里不需要强转。
boolean类型不能转换为其他的数据类型。
6.运算符
•Java 语言支持如下运算符:
- –算术运算符: +,-,*,/,%,++,–
- –赋值运算符 =
- –扩展赋值运算符:+=,-=,*=,/=
- –关系运算符: >,<,>=,<=,==,!=
- –逻辑运算符: &&,||,!
- –位运算符: &,|,^,~ , >>,<<,>>> (了解!!!)
- –条件运算符 ?:
•相关概念辨析
- –+ 运算符 操作符 Operator
- –5+6 表达式 expression
- –5 6 操作数 Operand
- int m =5+6; Sentence
- 1:/ 除 6/4=1 6/4.0=1.5
- 2: %取模(求余) 6%4=2
- 3:+ 6+‘a’=103
- 6+“a“=6ª
- 4:++
- a=2;b=++a+9;
- a=2;b=a+++9;
- –+:字符串相加,只要有一个操作数是字符串,自动变为字符串相连
二元运算符类型提升:
整数运算:
•如果两个操作数有一个为Long, 则结果也为long
•没有long时,结果为int。即使操作数全为shot,byte,结果也是int.
浮点运算:
•如果两个操作数有一个为double, 则结果为double.
•只有两个操作数都是float, 则结果才为float.
一元运算符(++, --):
int a = 3;
int b = a++; //执行完后,b=3。先给b赋值,再自增。
int c = ++a; //执行完后,c=5。先自增,再给b赋值
赋值运算符
•基本赋值运算符 =
•扩展赋值运算符
–算术运算符和赋值运算符结合
关系运算符
关系运算符用来进行比较运算
关系运算的结果是布尔值:true/false
注意
区分==和=
不等于是!=不是<>
逻辑运算符
逻辑运算符与布尔操作数一起使用,组成逻辑表达式
逻辑表达式的结果是布尔值
&和&&的区别
“&”:无论任何情况,“&”两边的表达式都会参与计算。
“&&”: 当“&&”的左边为false,则将不会计算其右边的表达式。即左false则false
“|”和“||”的区别与“&”和“&&”的区别类似。
位运算符(了解)
- 位运算符是对操作数以二进制比特位为单位进行操作和运算,操作数和结果都是整型数。
- 如果操作的对象是char、byte、short,位移动作发生前其值会自动晋升为int,运算结果也为int。
运算符 | 含义 | 示例 |
---|---|---|
~ | 按位非(NOT)/取反 | b = ~a |
& | 按位与(AND) | c = a & b |
| | 按位或(OR) | c = a | b |
^ | 按位异或(相同为0相异为1) | c = a ^ b |
>> | 右移;左边空位补最高位即符号位 | b = a >> 2 |
>>> | 无符号右移,左边空位补0 | b = a >>> 2 |
<< | 左移;右边空位以补0 | b = a << 1 |
条件运算符
语法格式
x ? y : z
唯一的三目运算符
执行过程
其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
经常用来代替简单的if-else判断!
int a=3;
int b=5;
String str= "";
if(a<b){
str = "a<b";
}else{
str = "a>b";
}
int a=3;
int b=5;
String str= (a<b)?"a<b":"a>b";
运算符的优先级
- 不需要去刻意的记优先级关系
- 赋值<三目<逻辑<关系<算术<单目
- 理解运算符的结合性
7.表达式
表达式是符合一定语法规则的运算符和操作数的序列
例如:
5.0 + a
表达式包含多种运算时 按照一定顺序进行计算得出结果
表达式的类型:表达式的值的数据类型即为表达式的类型 。
表达式的值:对表达式中操作数进行运算得到的结果称为表达式的值。
表达式的运算顺序:首先应按照运算符的优先级从高到低的顺序进行,优先级相同的运算符按照事先约定的结合方向进行。 可以使用括号改变运算顺序增加表达式的可读性。
表达式分为简单表达式和复杂表达式
简单表达式
例如:
(a - b) * c - 4 i < 30 && i % 10 != 0
复杂表达式
例如:
i < 30 && i % 10 != 0
- 理解运算符的结合性
7.表达式
表达式是符合一定语法规则的运算符和操作数的序列
例如:
5.0 + a
表达式包含多种运算时 按照一定顺序进行计算得出结果
表达式的类型:表达式的值的数据类型即为表达式的类型 。
表达式的值:对表达式中操作数进行运算得到的结果称为表达式的值。
表达式的运算顺序:首先应按照运算符的优先级从高到低的顺序进行,优先级相同的运算符按照事先约定的结合方向进行。 可以使用括号改变运算顺序增加表达式的可读性。
表达式分为简单表达式和复杂表达式
简单表达式
例如:
(a - b) * c - 4 i < 30 && i % 10 != 0
复杂表达式
例如:
i < 30 && i % 10 != 0
(i < 30)&&(i % 10 != 0)