【JavaSE】基础知识复习 (一)

大半年没碰Java了,计划使用两周用尚硅谷Java2023的课程笔记复习一下,要点记载本章中

JDK版本: v17

JUnit版本: v4.12

hamcrest-core版本: v1.3

1.JVM

JVM是什么?

Java的跨平台性


Java的自动内存管理(内存分配、内存回收)

2.JDK 与 JRE


3.Java的某些要点

统一编码

Java 中的所有字符都使用 Unicode 编码,故一个字符可以存储一个字母,一个汉字,或 其他书面语的一个字符

char 型数据用来表示通常意义上“字符”(占 2 字节)

转义字符


close()释放资源

java什么时候该写.close()释放资源?

在Java中对资源的读写最后要进行close操作

比如

Scanner: 键盘输入功能

获得随机数

如何获取[a,b]范围内的随机整数呢?
(int)(Math.random() * (b - a + 1))+a

4.变量

字符类型: char

char 型数据用来表示通常意义上“字符”(占 2 字节)

Java 中的所有字符都使用 Unicode 编码,故一个字符可以存储一个字母,一个汉字,或 其他书面语的一个字符。

字符型变量的三种表现形式:

        – 形式 1:使用单引号(' ')括起来的单个字符。

        例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';

         – 形式 2:直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中, XXXX 代表一个十六进制整数。

        例如:\u0023 表示 '#'

        – 形式 3:Java 中还允许使用转义字符‘\’来将其后的字符转变为特殊字符 型常量。

        例如:char c3 = '\n'; // '\n'表示换行符

char 类型是可以进行运算的。因为它都对应有 Unicode 码,可以看做是一个数值。


布尔类型: boolean

不可以使用 0 或非 0 的整数替代 false 和 true,这点和 C 语言不同。

拓展:Java 虚拟机中没有任何供 boolean 值专用的字节码指令,Java 语言 表达所操作的 boolean 值,在编译之后都使用 java 虚拟机中的 int 数据类 型来代替:true 用 1 表示,false 用 0 表示。——《java 虚拟机规范 8 版》


基本数据类型转换

转换规则

隐式转换 (自动类型提升)

规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大) 的类型 。

显式转换 (强制类型转换)

规则:将取值范围大(或容量大)的类型强制转换成取值范围小(或容量小) 的类型。

将 3.14 赋值到 int 类型变量会发生什么?

        产生编译失败,肯定无法赋值。

        int i = 3.14;  // 编译报错

想要赋值成功,只有通过强制类型转换,将 double 类型强制转换成 int 类型才 能赋值

自动类型提升是 Java 自动执行的,而强制类型转换是自动类型提升的 逆运算,需要我们自己手动执行。

  • 转换格式
数据类型 1 变量名 = (数据类型 1)被强转数据值; // ()中的数据类型必须<=变量值 的数据类型
溢出与损失精度

小测试


字符串类型: String

String 不是基本数据类型,属于引用数据类型

String运算规则

运算符

赋值运算符

变量+2的推荐写法 

变量+1的推荐写法

运算符优先级
  • 开发建议

  • 优先级表 

5.流程控制

选择分支: switch

switch的条件只能是一个常量

case的穿透性
  • case穿透现象:指在switch语句中,当某个case语句没有break,程序会继续执行下一个case语句。
  • switch都支持哪些类型呢?

        基本数据类型:byte, short, char, int
        包装数据类型:Byte, Short, Character, Integer
        枚举类型:Enum
        字符串类型:String(Jdk 7+ 开始支持)

if-else 语句与 switch-case 语句比较


6.数组

 数组(Arrays)是一种基本的数据结构,可以存储固定大小的相同类型的元素。

数组特点

数组变量声明

创建数组对象并赋值
静态创建

注意:

  • 如果使用静态方式创建数组,那么系统会根据元素的个数自动计算数组的长度

  • 静态方式创建数组右边的中括号里面不能写长度

  • 静态方式的省略格式创建数组不能先声明后赋值,只能声明的同时直接赋值

错误写法

静态方式的省略格式创建数组不能先声明后赋值,只能声明的同时直接赋值

动态创建

动态:指定长度大小

遍历数组(两种)

数组元素的默认值

数组扩容与拷贝(两种方法)
Arrays.copyOf() (常用)

System.arraycopy()

拷贝,也能达到扩容的功能

格式化查看数组

数组排序(五种方法)
Arrays.sort()

最简单且最常用的排序方法,可以实现简单的升序排列

编程vlog第四天:新发现!!!Arrays.sort()的排序逻辑_哔哩哔哩_bilibili

元素是基本数据类型

可以在我的主页搜索【关键字:排序】,有一篇博客单门总结了各种排序查找

  • 元素个数 < 47 时使用插入排序
  • 47 <= 元素个数 < 286 时使用快速排序
  • 元素个数 > 286 时使用归并排序

一维数组内存机制

区域名称作用
虚拟机栈用于存储正在执行的每个 Java 方法的局部变量表等。局部变量表存 放了编译期可知长度
的各种基本数据类型、对象引用,方法执 行完,自动释放。
堆内存存储对象(包括数组对象),new 来创建的,都存储在堆内存。
方法区存储已被虚拟机加载的类信息、常量、(静态变量)、即时编译器编 译后的代码等数据。
本地方法栈当程序中调用了 native 的本地方法时,本地方法执行期间的内存区域
程序计数 器程序计数器是 CPU 中的寄存器,它包含每一个线程下一条要执行的 指令的地址


下一章:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值