java 语法第一章
helloworld 编写
class helloworldpublic static void main(String[] args){System.out.printline("helloworld")}
- 小结
- java语言严格区分大小写
- System.out.println("输出信息"); 在控制台输出信息之后会换行。
System.out.print("输出信息"); 在控制台输出信息之后不会换行。
System.out.println()在控制台没有输入任何信息,直接进行换行操作 - java程序中中的执行语句 需要以;结尾
- main方法为程序入口,固定写法
- 一个java文件里可以有很多个class类,但是只能有一个可以声明为public,而且要求声明public的类的类名必须与java源文件名相同。
注释
- 单行注释
- 多行注释
- 文档注释
//单行注释
/*
xxx
多行注释
*/
关键字
- java 中有特殊含义的字
- 标识符:凡是可以自己命名的地方,都是标识符。比如:类名,变量名,方法名,包名,等。
- 规则:见名知意
变量
- 数据类型、变量名、变量值
- 格式:数据类型 变量名 = 变量值
八种基本数据类型
byte short int long char float double boolean
整数类型:byte short int long
java程序变量声明通常为int ,定义long类型的变量,赋值时需要以l或者L作为后缀浮点类型:float double
float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求double:双精度,精度是float的两倍。通常采用此类型。定义float类型的变量,赋值时需要以"f"或"F"作为后缀。
Java 的浮点型常量默认为double型。char 型数据用来表示通常意义上“字符”(占2字节)
Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符。
boolean 类型用来判断逻辑条件,一般用于程序流程控制语句中
boolean 类型数据只有两个值:false 和true
计算机存储单位
-
字节(Byte):是计算机用于计量存储容量的基本单位,一个字节等于8bit
-
位(bit):是数据存储的最小单位。二进制数系统中,每个0或者1就是一个位,叫做bit (比特),其中8bit就称为一个字节(Byte)
-
转换关系:
-
8 bit = 1 Byte
-
1024 Byte = 1 KB
-
1024 KB = 1 MB
-
1024 MB = 1 GB
-
1024 GB = 1 TB
引用数据类型
String array 类 接口等
自动类型提升
-
规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型
(1)当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围大的变量时
int i = 'A';//char自动升级为int,其实就是把字符的编码值赋值给i变量了 double d = 10;//int自动升级为double long num = 1234567; //右边的整数常量值如果在int范围呢,编译和运行都可以通过,这里涉及到数据类型转换//byte bigB = 130;//错误,右边的整数常量值超过byte范围 long bigNum = 12345678912L;//右边的整数常量值如果超过int范围,必须加L,显式表示long类型。否则编译不通过
(2)当存储范围小的数据类型与存储范围大的数据类型变量一起混合运算时,会按照其中最大的类型运算。
int i = 1; byte b = 1; double d = 1.0;double sum = i + b + d;//混合运算,升级为double
(3)当byte,short,char数据类型的变量进行算术运算时,按照int类型处理。
byte b1 = 1; byte b2 = 2; byte b3 = b1 + b2;//编译报错,b1 + b2自动升级为intchar c1 = '0'; char c2 = 'A'; int i = c1 + c2;//至少需要使用int类型来接收 System.out.println(c1 + c2);//113
强制类型转换
- 规则:将取值范围大(或容量大)的类型强制转换成取值范围小(或容量小)的类型。
- 格式:数据类型1 变量名=(类型数据1) 被强制转换
(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)强制转换为存储范围小的变量时,可能会损失精度
或溢出
int i = (int)3.14;//损失精度double d = 1.2;
int num = (int)d;//损失精度int i = 200;
byte b = (byte)i;//溢出
2)当某个值想要提升数据类型时,也可以使用强制类型转换。这种情况的强制类型转换是没有风险
的,通常省略。
int i = 1;
int j = 2;
double bigger = (double)(i/j);
赋值运算符
赋值运算符 | 符号解释 |
---|---|
+= |
将符号左边的值 和右边的值 进行相加 操作,最后将结果赋值给左边的变量 |
-= |
将符号左边的值 和右边的值 进行相减 操作,最后将结果赋值给左边的变量 |
*= |
将符号左边的值 和右边的值 进行相乘 操作,最后将结果赋值给左边的变量 |
/= |
将符号左边的值 和右边的值 进行相除 操作,最后将结果赋值给左边的变量 |
%= |
将符号左边的值 和右边的值 进行取余 操作,最后将结果赋值给左边的变量 |
关系运算符
逻辑运算符
位运算符
运算符优先级
-
运算符有不同的优先级,所谓优先级就是在表达式运算中的运算符顺序。
优先级 运算符说明 Java运算符 1 括号 ()
、[]
、{}
2 正负号 +
、-
3 单元运算符 ++
、--
、~
、!
4 乘法、除法、求余 *
、/
、%
5 加法、减法 +
、-
6 移位运算符 <<
、>>
、>>>
7 关系运算符 <
、<=
、>=
、>
、instanceof
8 等价运算符 ==
、!=
9 按位与 &
10 按位异或 ^
11 按位或 ` 12 条件与 &&
13 条件或 ` 14 三元运算符 ? :
15 赋值运算符 =
、+=
、-=
、*=
、/=
、%=
16 位赋值运算符 &=
、`
键盘录入
-
如何实现键盘录入数据呢?(目前先记住使用)
-
导包(位置放到class定义的上面)
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
接收数据
int x = sc.nextInt();//接受int类型数据String x=sc.next()//接收String类型数据、
-
流程控制语句分类
-
顺序结构
-
顺序结构概述
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,自上而下,依次执行,程序中大多数的代码都是这样执行的。
总的来说:写在前面的先执行,写在后面的后执行
-
-
选择结构
-
break和continue的说明
适用范围 在循环结构中使用的作用 相同点break switch-case循环结构 一旦执行,就结束(或跳出)当前循环结构 此关键字的后面,不能声明语句continue 循环结构 一旦执行,就结束(或跳出)当次循环结构 此关键字的后面,不能声明语句
-
选择结构 也被称为分支结构。
选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
Java语言提供了两种选择结构语句-
if语句
if语句有三种格式 if语句第一种格式: if(关系表达式) {语句体 }if语句第二种格式: if(关系表达式) {语句体1;}else {语句体2;}f语句第三种格式: if(关系表达式1) {语句体1;}else if (关系表达式2) {语句体2;}…else {语句体n+1;}
-
switch语句
switch语句格式: switch(表达式) {case 值1:语句体1;break;case 值2:语句体2;break;…default: 语句体n+1;break;} 格式解释 switch表示这是switch语句 表达式的取值:byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是String case后面跟的是要和表达式进行比较的值 语句体部分可以是一条或多条语句 break表示中断,结束的意思,可以结束switch语句 default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。执行流程 首先计算出表达式的值 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。注意事项 case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的 default可以省略吗? 可以省略。一般不建议。除非判断的值是固定的。(单选题) break可以省略吗? 可以省略,一般不建议。否则结果可能不是你想要的 default的位置一定要在最后吗? 可以出现在switch语句任意位置。 switch语句的结束条件 遇到break 执行到程序的末尾
-
-
-
循环结构
-
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
-
for循环
-
for循环语句格式: for(初始化语句;判断条件语句;控制条件语句) {循环体语句;} 1,初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
-
while循环
①初始化部分 while(②循环条件部分){③循环体部分;④迭代部分; } while(循环条件)中循环条件必须是boolean类型。 注意不要忘记声明④迭代部分。否则,循环将不能结束,变成死循环。 for循环和while循环可以相互转换。二者没有性能上的差别。实际开发中,根据具体结构的情况,选择哪个格式更合适、美观。 for循环与while循环的区别:初始化条件部分的作用域不同。
-
do while循环
①初始化部分; do{③循环体部分④迭代部分 }while(②循环条件部分);do-while结构的循环体语句是至少会执行一次,这个和for和while是不一样的
-
无限循环
最简单"无限"循环格式 while(true) for(;;)
-
嵌套循环
所谓嵌套循环 是指一个循环A的循环体是另一个循环B。比如,for循环里面还有一个for循环,就是嵌套循环。其中,for ,while ,do…while均可以作为外层循环或内层循环。外层循环:循环A内层循环:循环B实质上,嵌套循环就是把内层循环当成外层循环的循环体。只有当内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的外层循环。 设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。 技巧:从二维图形的角度看,外层循环控制行数,内层循环控制列数。for(初始化语句①; 循环条件语句②; 迭代语句⑦) {for(初始化语句③; 循环条件语句④; 迭代语句⑥) {循环体语句⑤;} }//执行过程:① - ② - ③ - ④ - ⑤ - ⑥ - ④ - ⑤ - ⑥ - ... - ④ - ⑦ - ② - ③ - ④ - ⑤ - ⑥ - ④..
-
-