Java的基本语法
1、关键字和保留字
关键字
1. 定义:被java语言赋予了特殊含义,用做专门用途的字符串(单词)
2. 特点:关键字中所有的字母都为小写
保留字
现有的Java版本尚未使用,但后续版本可能会作为关键字使用,自己标识符要避免使用。eg :goto、const
2、标识符(Identifier)
1.定义
Java中对各种变量、方法和类命名时使用的字符序列成为标识符
2.标识符命名规则
-
由26个字母大小写、数字、_ 或 $组成
-
数字不能开头
-
不能使用关键字或保留字,但可以包含
-
严格区分大小写,长度无限制
-
标识符不能包含空格
3.标识符的命名规范
- 包名:多单词组成时所有字母都要小写:xxssaa
- 类名、接口名:多单词组成时要遵守大驼峰命名法,每个单词首字母大写:AaaDdd
- 变量名、方法名:多单词组成时要遵守小驼峰命名法,除了第一个单词的首字母不大写,后面的单词都要大写:ssAaFf
- 常量名:所有字母大写,每个单词都要用_连接:XXX_YYY_ZZZ
3、变量
1.定义
内存中的一个存储区域,区分类型。变量是程序的最基本的单位,包含变量类型 + 变量名 +变量值
2.格式
数据类型 变量名 = 变量值;
//声明一个整形变量并赋值,注意两者的顺序,先定义后引用
int first = 10; //声明
System.out.println(first); //引用
3.注意点
区分作用域,可分为局部变量和全局变量
同一个作用域不能定义同一个变量名
4.数据类型
-
基本数据类型
-
数值型
-
整数类型(byte,short,int,long)
-
-
浮点类型(float,double)
-
-
-
字符型(char)
-
1字符 = 2字节 = 16bit
-
定义时是用单引号 ’ ’
-
内部只能声明一个字符
-
转义字符
-
直接使用Unicode值来表示字符型常量
-
ASCLL码(字符集)表示字符
char c = '2';
-
-
布尔型(boolean)
- 分为两种(用于判断)
- true
- false
- 分为两种(用于判断)
-
-
基本数据类型之间的运算规则
-
自动类型提升(自动类型转换)
-
强制类型提升
-
自动类型提升的逆运算
-
在数值前加上括号和强转的类型
double d = 12; int i = (int) d; //强转可能会产生精度损失
**boolean类型不能转化为其他数据类型
-
-
-
引用数据类型
-
类(class)
-
字符串类型(String)
-
声明String变量类型时使用双引号(英文)""
-
可以和八种基本数据类型变量做运算,只能做连接运算(+:连接符),运算的结果还是String类型
-
将String类型强转为七种(String类型不能转化为char类型变量,只能转为char数组)基本数据类型需要用包装类
public class test { public static void main(String[] args) { String str = "6"; int i = Integer.parseInt(str); byte b = Byte.parseByte(str); short s = Short.parseShort(str); double d = Double.parseDouble(str); float f = Float.parseFloat(str); boolean bn = Boolean.parseBoolean(str); long l = Long.parseLong(str); System.out.println(i); System.out.println(b); System.out.println(s); System.out.println(d); System.out.println(f); System.out.println(bn); System.out.println(l); } } //文档注释 /** String类型变量转化为char类型变量的方法 1.如果字符串类型变量值含有分隔符,则使用分割符:split() 2.如果字符串类型变量值就是单纯的“abc”,则使用toCharArray() */
-
-
-
接口(interface)
-
数据([]array)
-
4、运算符
1.算术运算符
- 取模运算正负由被模数控制(与被模数的符号相同),开发中一般用来判断数值是否被除尽
2.赋值运算符
- 符号:=
- 支持连续赋值
- 扩展赋值运算符:+=(先加后赋值),-=(先减后赋值),*=(先乘后赋值),/=(先除后赋值),%=(先取模后赋值),不会改变变量本身的数据类型
3.比较运算符(关系运算符)
4.逻辑运算符
-
-
在开发中推荐使用&&,引文&在左边为false的时候还会执行右边的运算。| 和 ||与& 和 &&相似
5.位运算符
-
-
左移<<:就是移多少位就乘2的几次幂(在一定范围内)
-
右移>>:就是移多少位就除2的几次幂(在一定范围内)
-
与运算&:换算成二进制进行且运算,全是1才是1
-
或运算|:换算成二进制进行或运算,有1就是1
-
异或运算^:换算成二进制进行异或运算,相同为1,不同为0
-
取反运算:换算成二进制进行取反,连同符号位都取反(32位)
-
6.三元运算符
-
-
凡是可以使用三元运算符的都可以改写成if-else语句,反之,不成立
7.运算符的优先级
5、程序流程控制
-
顺序结构
- 程序从上往下逐行地执行,中间没有任何判断和跳转
-
分支结构
-
根据条件选择性的执行程序代码
-
分为两种分支语句:if - else 和 switch - case
-
if - else 的三种语法格式
//第一种格式 if(条件表达式){ 执行代码块 } //第二种格式 if(条件表达式){ 执行代码块1 }else{ 执行代码块2 } //第三种格式 if(条件表达式){ 执行代码块1 }else if(条件表达式) { 执行代码块2 ......... }else{ 执行代码块n }
-
switch - case的语法格式
switch(表达式){ /* 表达式只能式6种类型:byte、short、char、int、String类型、枚举类型 */ case 常量1: 语句; //break; case 常量2: 语句; //break; case 常量3: 语句; //break; ....... case 常量n: 语句; //break; default: 语句; }
凡是可以使用switch - case 的都能用if - else ,反之,则不行。一般优先使用switch - case
-
-
循坏结构
-
for循环
for(初始化条件;循环条件;迭代条件){ 循环体; }
-
while循环
初始化条件 while(循环条件){ 循环体; 迭代条件; } //for和while循环可以相互转化的
-
do{} - while()循环
初始化条件 do{ 循环体; 迭代条件; }while(循环条件) //至少会执行一次循环体
-
break 和 continue 关键字的用法
-
break
- 在switch - case 循环和循环结构里面使用
- 结束当前循环
-
continue
- 在循环结构种使用
- 结束本次循环
-
两者相同点
-
两者执行之后后面的语句都不能执行
-
在嵌套循环中可结束指定for循环,指定的循环前面加一个标签,比如:
lable:for(int i = 0; i<10; i++){ //lable:是用来标识for循环,可以自定义名称 for(int j = 0; j<10; j++){ if(j % 4 == 0){ break lable; //结束指定for循环 } } }
//例题: public class Test1 { public static void main(String[] args) { int count = 0; //初始化质数个数 long start = System.currentTimeMillis(); //获取计算质数前的时间点 lable: for (int i = 2; i <= 100000; i++) { for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { continue lable; //指定跳过本次循环 } } count++; } long end = System.currentTimeMillis(); //获取计算质数后的时间点 System.out.println("质数的个数为:" + count); System.out.println("所花费的时间为:" + (end - start)); } }
-
-