Java是一种强类型的语言
强类型的含义:
1、所有的变量必须先声明后使用
2、指定类型的变量只能接受与之匹配的值
注释
Java语言的注释一共有三种类型
- 单行注释
- 多行注释
- 文档注释
package day1;
/*
这是一个多行注释
多行注释
*/
public class CommentTest {
public static void main(String[] args) {
// 这是一个单行注释
System.out.println("Hello World!");
}
}
如果编写Java源代码时添加了合适的文档注释,然后通过JDK提供的javadoc工具可以直接将源代码里的文档注释提取成一份系统的API文档
标识符和关键字
标识符就是用于给程序中的变量、类、方法命名的符号。Java语言的标识符必须以字母、下画线、美元符开头,后面可以跟任意数目的字母、数字、下画线和美元符。
注意,此处的字母不仅限于26个英文字母,而且可以是中文字符、日文字符等
标识符的规则:
- 标识符可以由字母、数字、下画线和美元符组成,其中不能以数字开头
- 标识符不能是Java的关键字和保留字,但是可以包含Java的关键字和保留字
- 标识符不能包含空格
- 标识符只能包含美元符,不能包含其他特殊字符
Java关键字
break | ||||
case | const | |||
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
true | false | null |
基本数据类型
注意:如果直接将一个较小的整数值(在byte和short类型的范围内)赋值给一个byte或short变量,系统会自动将这个整数类型当成byte或short类型处理,但是如果使用一个巨大的整数值(超出int类型的范围),Java不会自动将这个整数值变成long类型来处理。如果希望系统把一个整数当成long类型来处理,应在这个整数值后增加英文字母l或L后缀
Java语言的浮点类型默认是double类型,如果希望Java把一个浮点类型值当成float类型处理,应该在这个浮点类型值后紧跟f或F
在Java语言中,boolean类型的值只能是true和false,不能用0和非0来代表,其他基本数据类型的值也不能转换成boolean类型
基本类型的类型转换
自动类型转换
Java所有的数值型变量可以相互转换,如果系统支持把某种基本类型的值直接赋值给另一种基本类型的变量,则这种方式称为自动类型转换
上图中箭头左边的数值类型可以自动转换为箭头右边的数值类型
强制类型转换
强制类型转换的运算符是圆括号,其语法格式如下:
(targetType)value
package day1;
/**
* 强制类型转换
*/
public class NarrowConversion {
public static void main(String[] args) {
int iValue = 666;
byte bValue = (byte)iValue;
System.out.println(bValue);
double dValue = 3.14;
iValue = (int)dValue;
System.out.println(iValue);
}
}
-102
3
Process finished with exit code 0
如果试图强制把范围大的类型转换成范围小的类型,必须格外小心,因为非常容易引起信息丢失
eg:随机生成验证码
思路:随机生成在指定范围内的int数字,然后将其强制转换成char类型,再将char类型拼接起来即可
package day1;
/**
* 随机生成验证码
*/
public class RandomStr {
public static void main(String[] args) {
StringBuilder result = new StringBuilder(""); // 用来存放结果
for (int i = 0; i < 6; i++) {
int val = (int)(Math.random()*26+97); // 随机产生指定范围内的数字
result.append((char)val);
}
System.out.println(result.toString()); // 输出结果
}
}
hkptwd
Process finished with exit code 0
当一个算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升。Java定义了如下自动提升规则
- 所有byte类型、short类型和char类型将被提升成int类型
- 整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型
运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。Java语言使用运算符将一个或多个数连缀成执行性语句,用以实现特定的功能。
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 类型相关运算符
所有数学运算符都认为是从左向右运算的,Java语言中大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、-- | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |
源代码就是一份文档,源代码的可读性比代码运行效率更重要
\quad
\quad 注意:
- 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把他分成几步来完成
- 不要过多的依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,尽量使用()来控制表达式的执行顺序