Java
是强类型语言,变量必须先定义再使用。
变量的类型是确定的,不可改变。
int a = 1;
a = 2;
!> 变量定义时可以在后面赋值而不初始化。但没有值的变量不允许被使用。
使用 final
修饰符定义一个常量。常量在初始化后不可重新赋值。
final int a = 1;
使用var
关键字时,编译器会根据表达式的值推断出变量的类型。
var v = 233; //int
值类型:
分类 | 类型名 |
---|---|
整数 |
byte ,short ,int ,long
|
浮点数 |
float ,double
|
字符 | char |
布尔 | boolean |
除这些类型外,剩下的都是引用类型。 引用类型的变量类似于C语言的指针,它内部存储一个“地址”。
基本类型 | 对应的引用类型 |
---|---|
boolean | java.lang.Boolean |
byte | java.lang.Byte |
short | java.lang.Short |
int | java.lang.Integer |
long | java.lang.Long |
float | java.lang.Float |
double | java.lang.Double |
char | java.lang.Character |
Number
,可以通过包装类型获取任意基本类型。 Number num = new Integer(999);
类型 | 占用字节 | 范围 |
---|---|---|
byte |
1 | -128~127 |
short |
2 | -32768~32767 |
int |
4 | -2147483648 ~ 2147483647 |
long |
8 | -9223372036854775808 ~ 9223372036854775807 |
同一个数的不同进制的表示是完全相同的
0b1001
023456
0xac
2_000_000_000
123L
int i;
i = 123456;//正数
i = -123456;//复数
i = 0b10010101;//二进制
i = 023456;//八进制
i = 0xac; //十六进制
i = 2_000_000_000; //数字之间可以加下划线,方便表示
long l = 123L; //末尾加L用来表示长整型
类型 | 占用字节 | 范围 |
---|---|---|
float |
4 | $3.4 \times 10^38$ |
double |
8 | $1.79 \times 10^308$ |
1.5e6
1.5e3f
NaN
表示Not a NumberInfinity
表示无穷大,-Infinity
表示负无穷大 float f1 = 1.5f;
double d2 = 1.3;
double d3 = 1.5e8;
!> 1.5
和 1e1.5
等格式默认是 double
型,不可以直接赋值给 float
型。float
型的初始值一般需要加上 f
后缀。
Java语言对布尔类型的存储并没有做规定,因为理论上存储布尔类型只需要1 bit,但是通常JVM内部会把boolean
表示为4字节整数。
true
false
boolean b1 = true;
boolean b2 = false;
字符类型char
表示一个字符,占用2
个字节。Java的char
类型除了可表示标准的ASCII外,还可以表示一个Unicode
字符。可以把字符型字面量赋给整数。
!> 字符类型只能使用 ''
且只能表示一个字符。
char c1 = '1';
char c2 = '啊';
引用类型的变量可以指向一个空值 null
,它表示不存在,即该变量不指向任何对象。
String s1 = null;
String.valueOf(基本类型或引用类型)
Integer.parseInt(字符串,进制=10)
boolean
`Boolean.parseBoolean(字符串)str1.toCharArray()
new String(charArray)
str1.getBytes(编码名称)
new String(byteArray, 编码名称)
Java支持大多数C语言支持的整数和浮点数计算。
运算符 | 目数 | 功能 | 示例 |
---|---|---|---|
+ | 单目 | 正号 | +2 |
+ | 二目 | 加法 | 1+2 |
- | 单目 | 负号 | -2 |
- | 二目 | 减法 | 1-2 |
* | 二目 | 乘法 | 1*3 |
/ | 二目 | 除法,整数除法只会得到整数,浮点数除法得到浮点数 |
1/3=0 ,1/5.0=2.0
|
% | 二目 | 求余,仅限整数 | 1%3 |
+=,-=,*=,/=,%= | 二目 | 复合赋值运算符 | int i = 0; i+=5; |
++ | 单目 | 前置自增 |
int i = 0; ++i 得到1 |
++ | 单目 | 后置自增 |
int i = 0; i++ 得到0 |
-- | 单目 | 前置自减 |
int i = 0; --i 得到-1 |
-- | 单目 | 后置自减 |
int i = 0; i-- 得到0 |
<< | 二目 | 左移位,不影响正负性 |
2<<3 得到8 |
>> | 二目 | 右移位,不影响正负性 |
8>>3 得到2 |
>>> | 二目 | 右移位,结果为非负数 |
8>>>3 得到2 |
& | 二目 | 与运算,两个数均不为0时得到1 |
1&0 得到0,1&1 得到1 |
| | 二目 | 或运算,两个数中任意一个不为0时得到1 |
1|0 得到1,0|0 得到0 |
~ | 单目 | 非运算,非零数变为0,0变为1 |
~10 得到0,~0 得到1 |
^ | 双目 | 异或运算,相同的两个数结果为0,不同的为1 |
1^1 得到0,1^0 得到1 |
!> 整数的除法对于除数为0时运行时将报错,但编译不会报错。而浮点数除数为0时得到 NaN
或 Infinity
!> 溢出的计算结果不会报错
>
,>=
,<
,<=
,==
,!=
&&
||
!
b ? x : y
与运算和或运算具有短路特性。
当两个值类型比较时,比较值;当两个引用类型比较时,比较两个引用是否指向同一个对象(相当于判断指针是否相等)。
判断引用类型的变量是否相等,需要使用 equals
方法。
!> 当 s1
为 null
时,会出现NullPointerException
异常。
String s1 = "hi";
String s2 = "HI".toLowerCase();
System.out.println(s1 == s2); //false
System.out.println(s1.equals(s2)); //true
使用 +
可以进行字符串的连接。
如果用+
连接字符串和其他数据类型,会将其他数据类型先自动转型为字符串,再连接。
字符串比较
使用 equals
方法:s1.equals(s2)
在Java的计算表达式中,算术运算和位运算优先级从高到低依次是:
()
!
~
++
--
*
/
%
+
-
<<
>>
>>>
&
|
+=
-=
*=
/=
关系运算的优先级:
!
>
,>=
,<
,<=
==
,!=
&&
||
(类型) 变量
""
表示。String s1 = "hellp";
从Java 13开始,字符串可以用"""..."""表示多行字符串,且多行字符串前面共同的空格会被去掉。 编译时,命令行需要加上
-enable-preview
后缀
String s = """
SELECT * FROM
users
WHERE id > 100
ORDER BY name DESC""";
str1.equals(str2)
str1.equalsIgnoreCase(str2)
str1.contains(str2)
str1.substring(起始位置,终止位置)
范围为 [起始位置, 终止位置)
str1.trim()
,空白字符包括空格,\t
,\r
,\n
。str1.isEmpty()
str1.isBlank()
str1.replace(要替换的字符串, 目标字符串)
。str1.split(分隔符)
,返回字符串数组。str1.join(字符串数组)
会以 str1
为分隔符将数组连接起来。+
直接拼接两个字符串。str1.formatted(数据...)
String.format(字符串,数据...)
String s = "Hi %s, your score is %d!";
System.out.println(s.formatted("Alice", 80));
int[]
和 new
定义数组int[] arr = new int[2] {0,1}
{}
定义数组。长度根据{}
内元素个数判断。int[] arr = {0,1}
定义高维数组
由于数组是引用类型,所以二维部分的长度可以不同。
int [][] arr1 = {{0,1,2},{3,4,5,6,7,8}}
0
,浮点型是0.0
,布尔型是false
。int[] arr = new int[2]
arr[0] = 1;
arr[1] = 2;
使用 length
属性获取数组长度。
System.out.println(arr.length);
java.util.Arrays
,使用 Arrays.toString
将数组转换为字符串。java.util.Arrays
,使用 Arrays.deepToString
将数组转换为字符串。System.out.println(Arrays.toString(arr))
引入包java.util.Arrays
,使用 Arrays.sort
进行升序排序。
Arrays.sort(arr)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。