自掘Java----②java基础定义
一 Java基础语法
class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
1.1 关键字(keyword)
- 定义:关键字是Java语言中预先规定的具有固定功能和意义的单词。如:
public
static
void
class
- 特点:小写字母
- 一共50个,其中
const
和goto
是保留字(reserved word),true
,false
,null
是字面量。 - 官方查询:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
1.2 标识符( identifier)
Java中为变量、方法、类等要素命名时使用的字符序列,称为标识符。
- 规则:
- 标识符由字母、数字、
_
、$
组成的任意字符序列 - 数字不能用于开头
- 汉字可以作为标识符
- 区分大小写
- 长度无限制
- 标识符不能使用关键字*
- 标识符由字母、数字、
- 规范:
- 包名:多单词组成时所有字母都小写:
java.lang
,com.atguigu.bean
- 类名、接口名:多单词组成时,所有单词的首字母大写:
HelloWorld
,String
,System
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:
age
,name
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:
MAX_VALUE
,PI
- 包名:多单词组成时所有字母都小写:
更多细节详见《代码整洁之道_关于标识符.txt》《阿里巴巴Java开发手册-1.7.1-黄山版》
1.3 注释
1.3.1 注释的分类
用来解释说明的内容,分为单行注释、多行注释和文档注释。
- 单行注释:ctrl+/
//注释的内容
ctrl+/
- 多行注释:ctrl + shift + /
/*注释的内容*/ ctrl+shift+/
- 文档注释:
/**注释的内容*/
- 取消注释
取消单行注释:ctrl+/
取消多行注释:光标放到注释处 ctrl + shift + /
1.3.2 注释的作用
- 用来解释说明,增强了程序的可读性和可维护性;
- 可以帮助我们查找错误;
1.3.3 注释的注意事项
单行注释可以嵌套;多行注释不可以嵌套
原因是多行注释遇到*/
结束,再次出现就报错,
同理,多行注释中可嵌套单行注释
1.3.4 文档注释打开方式
文档注释内容可以被 javadoc
所解析,生成一套以网页文件形式体现的该程序的说明文档
javadoc HelloWorld.java
index.html
文件就是文档注释
1.4 变量的声明和初始化
- 变量(Variable)是计算机程序运行过程中其值可以发生改变的量。它通常用于存放程序运行时输入、处理和输出过程中所涉及的各种数据。
- 变量由数据类型和变量名(Variable Name)两部分来表示。
- 数据类型决定了该变量的数据存储结构、取值范围及可进行的操作(运算);
//先声明,后初始化
char gender;
gender = '女';
//声明同时初始化
char genderr = '女';
二 数据类型
Java 中数据类型可分为基本数据类型和引用数据类型
2.1 基本数据类型的分类
基本数据类型: 整型、浮点型、字符型、布尔型
基本数据类型 | |||||
---|---|---|---|---|---|
序号 | 数据类型 | 长度(字节) | 取值范围 | 举例说明 | 所属 |
1 | byte | 1个字节 | -128~127(默认:0) | byte b = 10; | 整型 |
2 | short | 2个字节 | -32768~32767(默认:0) | short s = 10; | |
3 | int | 4个字节 | -2147483648~2147483647(默认:0) | int i = 10; | |
4 | long | 8个字节 | -2^63 - 2^63-1(默认:0) | long l = 10(l/L); | |
5 | float | 4个字节 | 1.401298e-45~3.402823e+38(默认:0.0) | float f = 10.0f; float f = 10.0F; | 浮点型 |
6 | double | 8个字节 | 4.9000000e-324~1.797693e+308(默认:0.0) | double d = 10.0(D/d); | |
7 | char | 2个字节 | 0 - 2^16-1(默认:空) | char c = 'c'; | 字符型 |
8 | boolean | 1个字节 | true / false(默认:false) | boolean b = true; | 布尔型 |
2.1.1 整型
- 赋值:当我们给
long
类型变量赋值的时候,建议在后面加上L或者l
不加的话,当数较大时会报错,这是因为整数默认int
类型
2.1.2 浮点型
- 赋值:
float
常量要么后面有F/f,要么可以写成整数形式(输出仍为浮点型)
赋值double
时后缀可加可不加,这是因为小数默认为double
类型 - 浮点数的精度:浮点数不能精确的表示0.1、0.01、0.001等10的负次幂,如果需要精确数字计算或保留指定位数的精度,需要使用
BigDecimal
类
2.1.3 字符型
Java中的所有字符都使用Unicode编码,故一个字符(占2字节)可以存储一个字母、一个汉字其他书面语的一个字符。
- 四种赋值形式:
- 使用单引号括起来单个字符:
char c1 = 'a';
- 直接使用 Unicode值来表示字符型常量:
'\uXXXX'
,XXXX代表一个十六进制整数:\u0023
表示#
- 转义字符
\
来将其后的字符转变为特殊字符型常量:char c3 = '\n';
,'\n'
表示换行符 - 用ASCII码赋值:
char c4 = 96;
,参与运算时,char的值即为ASCII码
- 使用单引号括起来单个字符:
转义字符 | 说明 | Unicode表示方式 |
---|---|---|
\t | 制表符 | \u0009 |
\" | 双引号 | \u0022 |
\' | 单引号 | \u0027 |
\\ | 反斜线 | \u005c |
\b | 退格符 | \u0008 |
\r | 回车符 | \u000d |
2.1.4 布尔型
boolean
类型用来判断逻辑条件,一般用于流程控制语句中,只有两个值:true
、false
,不可以使用0或非0的整数替代
boolean值在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false用0表示
2.2 引用数据类型
引用数据类型包括数组(array)、 类(class)、接口(interface)、枚举(enum)、注解(annotation)、记录(record)
2.2.1 String 类(class)
- 赋值:使用双引号来表示一个字符串,内部可以包含0、1个或多个字符:
String str = “”
- 运算:任意八种基本数据类型(包括boolean)与String类型只能进行连接“+”运算,且结果一定也是String类型
- String类型不能通过强制类型转换转为其他的类型,只能使用
Integer.parseInt
类
String str = "123";
int num = (int)str;//错误的
int num = Integer.parseInt(str);
2.3 数据类型的转换
2.3.1 隐式类型转换
隐式类型转换就是指存储范围小的数据类型会自动提升为存储范围大的数据类型
即:当多个数据类型参与运算的时候,存储范围小的数据类型会自动提升为存储范围大的数据类型
- boolean类型不能和其他数据类型相互转换
- 字节长不等于存储范围大,
float
(4字节)储存范围大于long
(8字节) - 特别的:
byte
和short
和char
各自和互相的运算都会转为int
2.3.2 强制类型转换
强制类型转换是指大的数据类型被强制转换成小的数据类型
//小的数据类型 小的数据类型的变量名 = (小的数据类型)大的数据类型的变量名;
int i = 130;
byte b = (byte)i;
注意:我们能不使用强制转换,尽量不要使用,因为会出现意想不到的结果,譬如浮点数截断、整型溢出
在Java中,针对
byte
类型和short
类型的时候,当程序不确定是否超范围时,均报错,而C正常运行
即:当定义只要byte
类型和short
类型的时候,右边有一个是变量,就会编译报错
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;
System.out.println(b3);//编译报错
2.4 不同进制的表示方式
在十六进制中 10 -> A、11 -> B、12 -> C……15 -> F
-
十进制(decimal)
- 数字组成:0-9
- 进位规则:满十进一
-
二进制(binary)
- 数字组成:0-1
- 进位规则:满二进一,以
0b
或0B
开头
-
八进制(octal):很少使用
- 数字组成:0-7
- 进位规则:满八进一,以数字
0
开头表示
-
十六进制
- 数字组成:0-9,a-f
- 进位规则:满十六进一,以
0x
或0X
开头表示。此处的 a-f 不区分大小写
进制 | 表示方式 | 例子 |
---|---|---|
二进制(binary) | 0b 前缀 | 0b1001 |
十进制(decimal) | 无前缀 | 456 |
八进制(octonary) | 0 前缀 | 0456 |
十六进制(hexadecimal ) | 0x 前缀 | 0x45f |
2.5 计算机数据的存储
参照本人另一篇文章大一C语言挣扎之路2(数据类型、常量、变量、存储形式)
-
计算机数据的存储使用二进制
补码
形式存储,并且最高位是符号位
。- 正数:
最高位是0
- 负数:
最高位是1
- 正数:
-
规 定
- 正数的补码与反码、原码一样,称为
三码合一
- 负数的补码与反码、原码不一样:
- 负数的
原码
:把十进制转为二进制,然后最高位设置为1 - 负数的
反码
:在原码的基础上,最高位不变,其余位取反(0变1,1变0) - 负数的
补码
:反码+1
- 负数的
- 正数的补码与反码、原码一样,称为
二进制转十进制:权相加法
-
例如:byte类型(1个字节,8位)
25 ==> 原码 0001 1001 ==> 反码 0001 1001 -->补码 0001 1001
-25 ==>原码 1001 1001 ==> 反码1110 0110 ==>补码 1110 0111
整数:
正数:25 00000000 00000000 000000000 00011001(原码)
正数:25 00000000 00000000 000000000 00011001(反码)
正数:25 00000000 00000000 000000000 00011001(补码)
负数:-25 10000000 00000000 000000000 00011001(原码)
负数:-25 11111111 11111111 111111111 11100110(反码)
负数:-25 11111111 11111111 111111111 11100111(补码)
三 常量 (待修改)
常量是永恒不变的量。分为字面值常量和自定义常量。
3.1 字面值常量
3.1.1 整数常量
例如:1,2,12
System.out.println(1);
3.1.2 小数常量
例如:3.14,1.2
System.out.println(1.2);
3.1.3 字符常量
例如:‘a’, ‘b’, ‘1’, ‘#’, ‘在’, ’ ’ 都是字符常量
而’abc’, ‘’ 不是字符常量
注意:
①字符常量是必须用单引号括起来的
②引号里面有且只能有一个字符,不能没有字符
System.out.println('b');
System.out.println(' ');
System.out.println('abc'); //程序报错
System.out.println(''); //程序报错
3.1.4 字符串常量
例如:“a”, “ab”, “123”, “abc123”, “”
注意:
①字符串常量是必须用双引号括起来的
②双引号里面可以有一个数据,可以有多个数据,可以没有数据
System.out.println("雁丘");
System.out.println("a");
System.out.println("ab");
System.out.println("123");
System.out.println("123");
System.out.println("");
3.1.5 布尔常量
只有2个值:true
、false
System.out.println(true);
System.out.println(false);
3.1.6 空常量
只有一个值:null
空常量不能用System.out.println语句输出
System.out.println(null); //报错