文章目录
1.注意点
- Java是区分大小写
- 类名应该遵循驼峰命名法
2.注释
- 单行注释
shell
//单行注释
- 多行注释
shell
/*多行注释*/
/**
* 多行注释
*
*/
3.数据类型
3.1整形
- 定义:没有小数部分的数值,可以是复数
- 分类:
- int:4字节,-2147483648~2147483648
- shor:2字节,-32768~32767
- long:8字节,-9223372036854775808~9223372036854775807
- byte:1字节,-128~127
- 进制:
- 十进制:0,1,11
- 八进制:010,011,017,八进制必须有一个前缀0
- 二进制:0101010,java7之后,可以在二进制数前加一个0b
- 十六进制:0XA1,以0X作为前缀
- 注意点:
- 一个字节是8个bit,容量是256
- long类型需要以L结尾,比如long i = 1L
- Java中没有unsigned类型的数据,这点和C++还是有区别的
- 由于JVM的存在,java的类型容量和所在的计算机机器无任何环境
3.2浮点
- 定义:有小数部分的数值
- 分类:
- float:4字节,大约±3.402 823 47E+38F(有效位数为6~7位)
- double:8字节,大约是1.797 693 134 862 315 70E+308(有效位数为15位)
- 注意点:
- double类型是float类型的两倍,所以绝大部分应用部分都是用的double类型
- float类型的数值有一个后缀F或者f,没有F或者f的后缀,默认是double类型,当然double类型也可以添加后缀D/d
- 浮点类型不适用于无法接受舍入误差的金融计算中
3.3字符
- 定义:原本是用来表示单个字符,不过现在,有个unicode对应的一个字符,有些Unicode对应两个字符,char类型用单引号括起来
- 码点和代码单元:
- 码点:与编码表的字符对应的代码单元,
- 代码单元:UTF-16编码采用不同长度的编码表示所有的unicode编码,在基本的多语言级别(从java5开始,unicode分为17个代码级别,第一个代码级别别称为基本的多语言代码级别,其余的16个级别包含了辅助字符)中每一个字符用16个字符表示,这16个字节被称为代码单元,辅助字符由多个代码单元构成
3.4布尔
- 定义:有两个值,true,false
4.变量与常量
- 变量
- 定义:数据类型 变量名;
- 初始化:声明一个变量之后,必须用赋值语句对变量进行显式初始化,要在变量第一次使用的地方进行初始化
- 常量:
- 定义:java中用final指示常量,习惯上变量使用大写,每个单词之间用"_"进行划分;
5.String
定义:Unicode字符串序列,用双引号括住
- 创建方法
java
String str1 = "Hello"; // 直接赋值,"Hello"在字符串常量池,str1存在堆内存。所以String str1 = "Hello";String str2 = "Hello";
String str2 = new String("World"); // 构造函数,堆内存
String str3 = str1 + " " + str2; // 字符串拼接
- 其余方法
java
.length() // 长度
.equals() // 比较
.substring() // 截取
.indexOf() // 查找
.contains() // 包含检查
.replace() // 替换
.split() // 分割
.trim() // 去空格
.charAt() // 取字符
.startsWith() // 开头检查
.endsWith() // 结尾检查
.toUpperCase() // 转大写
.toLowerCase() // 转小写
.isEmpty() // 空检查
String.format() // 格式化
String.join() // 连接多个字符串
String.valueOf() // 转字符串
6.控制流程
- 条件语句:
java
if (condition) {
...
} else if (condition) {
...
} else {
...
}
- 循环语句
java
while(condition) {
....
}
do {
...
} while(condition)
for (int i = 0, i < 8, i++) {
...
}
for (int child : children) {
....
}
集合.foreach(i -> {
...
})
- switch语句
java
switch(chioce) {
case(1):
...
brack;
case(2):
...
brack;
case(3):
...
brack;
default:
...
brack;
如果case语句中没有brack语句,就会执行下一个case语句,这种情况是非常危险的。因此不建议使用switch语句,如果使用了switch语句,可以在编译的时候加上"-Xlint:fallthrough",例如javac -Xlint:fallthrough Test.java
- 中断控制流程语句
- brack:跳出循环
- continue:跳过本次循环
- 这两个关键字都可以携带标签
java
package chap2_流程控制.struct;
/**
* 但标签的break语句和continue语句
* 1-100之间的质数
*/
public class Test07 {
public static void main(String[] args) {
System.out.println("1-100之间的质数为:");
outer:for (int i=2;i<100;i++){
for (int j = 2;j<=i/2;j++){
if (i % j == 0) {
continue outer;
}
}
System.out.print(i +" ");
}
}
}
7.大数值
BigInteger和 BigDecimal是Java中处理超大数值和高精度计算的两个类,解决基本数据类型无法处理的场景。这两个类不能使用运算符,要使用类方法和实例方法
7.1BigInteger
7.1.1 创建和初始化
java
// 创建方式
BigInteger bi1 = new BigInteger("12345678901234567890"); // 字符串构造
BigInteger bi2 = BigInteger.valueOf(1234567890L); // long转BigInteger
BigInteger bi3 = BigInteger.ONE; // 常量:1
BigInteger bi4 = BigInteger.ZERO; // 常量:0
BigInteger bi5 = BigInteger.TEN; // 常量:10
7.1.2算术运算
java
BigInteger a = new BigInteger("100");
BigInteger b = new BigInteger("50");
// 基本运算
BigInteger sum = a.add(b); // 加法:150
BigInteger diff = a.subtract(b); // 减法:50
BigInteger product = a.multiply(b); // 乘法:5000
BigInteger quotient = a.divide(b); // 除法:2
BigInteger remainder = a.remainder(b); // 取余:0
// 幂运算
BigInteger power = a.pow(3); // 100的3次方:1000000
7.1.3转换方法
java
BigInteger bi = new BigInteger("123456789");
// 转换为基本类型
int intVal = bi.intValue(); // 转为int(可能溢出)
long longVal = bi.longValue(); // 转为long
double doubleVal = bi.doubleValue(); // 转为double
// 字符串转换
String str = bi.toString(); // 十进制字符串
String hex = bi.toString(16); // 十六进制字符串
String binary = bi.toString(2); // 二进制字符串
7.2BigDecimal
7.2.1创建方式
java
// (必须用字符串!)
BigDecimal bd1 = new BigDecimal("123.456"); // 字符串构造
BigDecimal bd2 = BigDecimal.valueOf(123.456); // double转(推荐)
BigDecimal bd3 = new BigDecimal(123.456); // double构造(不推荐)
BigDecimal bd4 = BigDecimal.ONE; // 常量:1
BigDecimal bd5 = BigDecimal.ZERO; // 常量:0
BigDecimal bd6 = BigDecimal.TEN; // 常量:10
7.2.2算术运算
java
BigDecimal a = new BigDecimal("100.50");
BigDecimal b = new BigDecimal("25.25");
// 基本运算
BigDecimal sum = a.add(b); // 加法:125.75
BigDecimal diff = a.subtract(b); // 减法:75.25
BigDecimal product = a.multiply(b); // 乘法:2537.625
// 除法(必须指定精度和舍入模式)
BigDecimal quotient = a.divide(b, 2, RoundingMode.HALF_UP); // 除法:3.98
// 其他运算
BigDecimal remainder = a.remainder(b); // 取余
BigDecimal power = a.pow(2); // 平方:10100.25
BigDecimal sqrt = a.sqrt(new MathContext(10)); // 平方根(Java 9+)
7.2.3精度控制
java
BigDecimal value = new BigDecimal("123.456789");
// 设置精度和舍入
BigDecimal rounded1 = value.setScale(2, RoundingMode.HALF_UP); // 123.46
BigDecimal rounded2 = value.setScale(3, RoundingMode.DOWN); // 123.456
BigDecimal rounded3 = value.setScale(0, RoundingMode.CEILING); // 124
// 获取精度信息
int scale = value.scale(); // 小数位数:5
int precision = value.precision(); // 总位数:9
BigDecimal unscaled = value.stripTrailingZeros(); // 去除末尾0
7.2.4转换方法
java
BigDecimal bd = new BigDecimal("123.456");
// 转换为基本类型
int intVal = bd.intValue(); // 转为int
long longVal = bd.longValue(); // 转为long
float floatVal = bd.floatValue(); // 转为float
double doubleVal = bd.doubleValue(); // 转为double
// 精确转换
BigInteger unscaledVal = bd.unscaledValue(); // 获取未缩放值
int scale = bd.scale(); // 获取小数位数
// 字符串转换
String str = bd.toString(); // 标准字符串
String eng = bd.toEngineeringString(); // 工程计数法
String plain = bd.toPlainString(); // 无指数形式