2.基础语法
2.基础语法
Pupper一. 语法结构
1 | public class Demo{ |
说明:
Demo
:表示一个类,类名为 Demo,与文件名相同public
: 表示一个公有的类public static void main
:表示一个主方法,即程序的入口(固定写法)System.out.println("你好,java");
: 表示输出到屏幕,“;”表示语句结束
- Java 语言严格区分大小写;
- 每个语句都必须以 “ ;” 结束;
- 括号都是成对出现的;
- 一个源文件只能有 一个
public
类,其他类的数量不限; - 每一个类在编译完成后,都会生成一个 “ .class ” 文件
- 如果原文件包含 public 类,则文件名必须与 类名相同;
二. 常用的转义字符
字符 | 说明 | 案例 | 运行结果 |
---|---|---|---|
\t | 制表符 | System.out.println(“北京\t天津\t上海”); | 北京 天津 上海 |
\n | 换行符 | System.out.println(“北京\n天津\n上海”); | 北京天津上海 |
\ | \ | System.out.println(“北京\n天津\t上海”); | 北京\n天津\t上海 |
\” | “ | System.out.println(“\”北京\””); | “北京” |
\’ | ‘ | System.out.println(“\’北京\’”); | ‘北京’ |
\r | 回车 | System.out.println(“北\r京”); | 京 |
三. 注释
文档注释
Javadoc是Sun公司提供的一个技术,从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档
1 | /** |
标签 | 说明 |
---|---|
@author | 作者 |
@version | 版本号 |
@return | 函数返回值 |
@see | 引用,查看相关的内容,如类,方法,变量等,必须顶头写 |
@throws | 构造函数或方法会抛出的异常 |
@param | 方法的参数 |
单行、多行注释
1 | // 这是一段注释 |
四、变量
1 | int a; |
变量:表示内存中的一个存储区域
- 不同的变量,类型不同,占用的区域大小也不用
变量必须先声明,后使用
- 变量在同一个作用域内不能重名
五、+ 号的使用
- 当左右两边都是 数值 类型时,则做 加法运算
- 当左右两边有一方为 字符串 类型时,则做 拼接运算
1 | public class demo01{ |
六、数据类型
1. 整数(byte、short、int、long)
类型 | 占用空间(字节) | 范围 |
---|---|---|
byte(字节) | 1 | -128 ~ 127 |
short(短整型) | 2 | -215 ~ 215 - 1(-32768 ~ 32767) |
int(整型) | 4 | -231 ~ 231 - 1(-2147483648 ~ 2147483647) |
long(长整型) | 8 | -263 ~ 263 - 1 |
一般的整型变量 默认为 int 类型
- int a = 10;
long 整型的写法 “ L” 一般为大写
- long a = 100L;
- 错误写法: int a = 100L;
2. 浮点型(flost、double)
类型 | 占用空间(字节) | 范围 |
---|---|---|
flost(单精度) | 4 | -3.403E38 ~ 3.403E38 |
double(双精度) | 8 | -1.798E308 ~ 1.798E308 |
浮点型常量默认为 double 类型
- 声明 flost 类型时,需要加 “F”
- flost a = 3.14F;
double 的精度大于 flost 的精度,通常采用 double 类型
不要直接使用计算结果为小数的值进行判断,应该是以小数差值的绝对值,在某个精度范围内做判断
1 | public class demo01{ |
3. 字符类型(char)
char 表示单个字符,多个字符时使用 String 类型
ASCII 码 :a : 97 A: 65
1 | char a = 'a'; |
字符常量是用 单引号(’’)括起来的单个字符
- 不能使用 双引号(””),所有使用双引号的都表示字符串
可以直接给 char 赋一个整数,输出时会按照 unicode 编码 输出字符
4. 布尔型(boolean)
- boolean 类型 的数据只有 true 和 false
- 在运算符中,true 相当于 1, false 相当于 0
七. 基本类型转换
1. 自动类型转换
自动类型转换: 当 java 程序在进行赋值或运算时,精度小的类型自动转换为精度大的数据类型。
自动类型转换细节:
- 多种类型的数据混合运算时,系统会将所有数据转换成容量最大的数据类型,然后进行计算。
- 把精度大的数据类型赋值给精度小的数据类型时,会报错
- byte 、short 和 char 之间不能进行数据转换
- byte、short、char 三者在计算时,首先转换为 int 类型
- boolean 不参与转换
- 自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型
2. 强制类型转换
强制类型转换: 将容量大的数据类型转换为容量小的数据类型
使用时需要加上 强制类型转换符(),可能会造成数据 精度降低 或 溢出
1 | // 精度降低 |
- 强转符号只对最近的操作数有效,可以使用小括号提升优先级
- char 类型可以保存 int 的常量值,不能保存 int 的变量值,需要强转
- byte 和 short 类型在进行运算时,当做 int 类型处理
1 | int x = (int)10*3.5 + 6*1.5; |
八. 基本数据类型和 String 类型的转换
1. 基本类型转 String 类型
格式: 基本数据类型 + “”;
1 | public class StringToBasic { |
2. String 类型 转 基本数据类型
String 类型转基本类型,需要 包装类调用 parse 方法 即可
1 | public class demo01{ |
九、运算符
1. 算术运算符
运算符 | 说明 | 案例 | 结果 |
---|---|---|---|
% | 取余 | 11%9 | 2 |
++x | 自增:先运算后取值 | a = 2;b = ++a; | a = 3, b = 3 |
x++ | 自增:先取值后运算 | a = 2;b = ++a; | a = 3, b = 2 |
—x | 自减: 先运算后取值 | a = 2; b = —a; | a = 1; b = 1 |
x— | 自减: 先取值后运算 | a = 2; b = a—; | a = 1; b = 2 |
2. 关系运算符
关系运算符的运算结果 为 true 和 false
运算符 | 说明 | 案例 | 结果 |
---|---|---|---|
instanceof | 检查是否是类的对象 | “hsp” instanceof String | true |
3. 逻辑运算符
短路 和 逻辑 的区别:
- 短路:当第一个条件已经能够确定结果时,后边的语句将不再执行,代码执行效率高;
- 逻辑: 不论第一个条件是否能确定结果,后边的语句会全部执行,代码执行效率低;
运算符 | 说明 | 规则 | ||
---|---|---|---|---|
& | 逻辑: 与 | 全真为真,一假全假 | ||
&& | 短路: 与 | 全真为真,一假全假 | ||
\ | 逻辑: 或 | 一真为真,全假为假 | ||
\ | \ | 短路: 或 | 一真为真,全假为假 | |
! | 逻辑: 取反 | 非真即假 | ||
^ | 逻辑: 异或 | 不同为真,相同为假 |
a | b | a&b | a&&b | a\ | b | a\ | \ | b | !a | a^b |
---|---|---|---|---|---|---|---|---|---|---|
true | true | true | true | true | true | false | false | |||
true | false | false | false | true | true | false | true | |||
false | true | false | false | true | true | true | true | |||
false | false | false | false | false | false | true | false |
4. 赋值运算符
符合运算符:
运算符 | 说明 |
---|---|
+= | 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; |
复合赋值运算符在使用时,底层会进行强制类型转换
如:
byte a = 10;
a += 5; 相当于 a = (byte)(a + 5)
5. 三元运算符
语法:
条件表达式 ? 表达式 1 : 表达式 2
说明:
- 如果条件表达式结果为 true,运算后的结果是 表达式 1;
- 如果条件表达式结果为 false, 运算后的结果是 表达式 2;
1 | public class Demo { |
十、标识符命名规范
命名包含:字母、数字、下划线,不能以字母开头
规范:
- 包名: 多个单词组成时,所有字母都小写;
- 类名、接口名: 多个单词组成时,所有单词的首字母大写;
- 变量名、方法名: 首个单词的首字母小写,剩下的首字母都大写;
- 常量: 所有字母都大写,单词之间以下划线连接;
十一、键盘输入语句
Scanner : 用于获取键盘输入语句
1 | // 引入 scanner |
十二、 位运算
符号 | 说明 | 规则 | 案例 | |
---|---|---|---|---|
>> | 向右位移 | 低位溢出,符号位不变,用符号位补溢出的高位 | ||
<< | 向左位移 | 符号位不变,低为补 0 | ||
>>> | 算术右移 | 低位溢出,高位补 0 | ||
~ | 按位取反 | 1 变 0,0变 1 | ||
& | 按位与 | 全为 1,结果为 1,否则为 0 | ||
\ | 按位或 | 一为 1,结果为 1,否则为 0 | ||
^ | 按位异或 | 1、0 各一个,结果为 1,否则为 0 |
https://player.bilibili.com/player.html?bvid=BV1fh411y7R8&p=100&page=100&t=229.5
原码、反码、补码
- 二进制的最高位(最左边的位数)是符号位: 0 表示正数,1 表示负数
- 正数的原码、反码、补码都一样;
- 负数的反码 = 原码符号位不变,其他位取反;
- 负数的补码 = 反码 +1, 负数的反码 = 负数的补码 +1
- 0 的反码、补码都是 0
- 计算机在运算时,都是以补码的方式运算的
- 查看运算结果时,要看他的原码