Java基础

文章目录

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();             // 无指数形式
相关推荐
无限进步_36 分钟前
C语言双向循环链表实现详解:哨兵位与循环结构
c语言·开发语言·数据结构·c++·后端·算法·链表
思密吗喽38 分钟前
如何完全清除Node.js环境重装 Node.js彻底卸载指南
java·开发语言·node.js·毕业设计·课程设计
summer__777740 分钟前
38-第七章:集合(7.1-7.4)
java
7ioik40 分钟前
Spring框架整合MyBatis框架?(超级详细)
java·spring·mybatis
低头不见42 分钟前
CTE聚合查询,性能优化不止10几倍
java·sql·postgresql
杨福瑞44 分钟前
数据结构:栈
c语言·开发语言·数据结构
故事不长丨1 小时前
解锁C#编程秘籍:封装、继承、多态深度剖析
开发语言·数据库·c#
远瞻。1 小时前
【环境配置】快速转移conda上的python环境
开发语言·python·conda
老青蛙1 小时前
Easy Work-简单、易用、傻瓜式的 Java 流程引擎
java·开源