JAVA基础一
名词
JSR 规范: Java Specification Request
JCP 组织: Java Community Process
JSR规范 时为了保证在给java平台开发新功能时,创建一个JSR规范,定义好接口。然后各个类别的第三方应用按照接口开发。
JSR是一系列的规范 从JVM内存模型到WEB程序接口 全部都标准化了 而负责审核JSR的组织就是JCP
JSR规范发布时,为了让大家有个参考需要发布
RI: Reference Implemenlation 参考实现
TCK: Technology Compatibility Kit 兼容性测试套件
RI只是一个能跑的代码 不注重性能 TCK是保证开发的功能相同
环境
开发需要安装jdk 因为有编译工具 运行时只需要jre就行
JAVA JVM 执行编译后的文件
javac 把java源文件.java编译成.class
jar 是把.class文件打包成.jar文件便于发布
javadoc 用于从java源码中自动提取注释并生成文档
jdb java调试器
JAVA11 新增了一个功能
JAVA xx.java 直接运行一个单文件源码
基础
程序基本结构
类名 必须以英文字母开头,后接字母 数字 和 下划线的组合
习惯首字母大写
注意public是访问修饰符,表示该class是公开的
不写public能正常编译 但这个类将无法从命令行执行
变量和数据类型
基本数据类型:
基本数据类型是CPU可以直接进行运算的类型,java定义了以下几种基本数据类型
整数类型: byte short int long
浮点数类型 float double
字符类型 char
布尔类型 boolean
JAVA定义的这些基本数据类型有什么区别呢 要了解这些区别 我们必须简单了解一下计算机内存的基本结构
计算机内存的最小存储单元是字节(byte) 一个字节就是一个8位的二进制 8个bit
框是内存的最小单元是一个byte 8个二进制bit
byte 占 1个框
short 占 2个框
int 占 4个框
long 占 8个框
double 占8个框
float 占4个框
char 占2个框
class Test {
public static void main(String
[] args
) {
int i
= 1111123323;
int i2
= -2323;
int i3
= 2_000_000_000
;
int i4
= 0xff000;
int i5
= 0b11123232
;
long l
= 9000000000L
;
float f
= 3.14f;
double d
= -3.45;
}
}
引用类型
String String[] int[]
字符串 数组 其实本质就是对象
常量
定义变量的时候在前边加上final修饰符 常量名最好大写
var关键字
var sb = new StringBuilder(); //这是java10 之后才有的
运算
防止int计算溢出要这么写
long x = 123;
long y = 23232;
long sum = x + y;
移位运算
举例子 int在内存里是4个byte,每个byte是8位的二进制
所以
00000000 00000000 00000000 00000001 表示整数1
移位运算符有三种 移动的是从第一个不为0的数开始移动
带符号 >>
向左位于<< 箭头冲哪边往那边移动
不带符号 >>>
浮点数运算
跟整数运算一样 但是没有位移运算 并且小数不能精确表示
正如浮点数的不靠谱 所以逻辑判断时尽量避免使用 x == 0.1
而是使用Math.abs(x - 0.1) < 0.00001
多行字符串 在java13后可以使用
""" SELECT * FROM
users
WHERE id > 100
ORDER BY name DESC """
String 具有不可变性
String s = "hello" 这个时候会在内存中创建 ”hello“ 然后指向 s 这个引用
当 s = ”world“时 会将s 指向world
String s = "hello";
String t = s;
s = "world";
System.out.printf(t); //hello
7. 数组类型
特点: 数组所有元素初始化为默认值。数组一旦创建,大小不可改变
数组的定义 注意时大括号 跟其他语言有点区别
int[] a = new int[] {1,2,3,4,5)}
int[] a = {1,2,3,4,5}
int[] a = new int[5]
数组时引用类型
int[] a = {1,2,3,4]}
a = {6,7,8}
System.out.println(a.length) //3
新的理解
计算机内存的最小存储单元是字节(Byte)一个字节就是一个8位二进制数 即8个bit 它的二进制范围00000000 ~ 11111111
1个字节 是1个byte 1024个字节是1k 1024K是1M 1024M是1G
关于内存泄漏和内存溢出
内存溢出 程序在申请内存的时候没有足够内存空间给他
内存泄漏 JVM给了1024M内存 其中一个对象用了512M内存 但是由于某些程序原因 导致这512M没有释放 这就叫做内存泄漏
常见的内存泄漏
长生命周期引用短生命周期 导致短生命周期的不能被释放
数据连接 socket JDBC IO 如果使用完没有close
加载数据量
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构。
数据类型:是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型:是指一个数学模型以及定义在该模型上的一组操作。
null 是关键字 注意JAVA是大小写敏感的 所以只有null
null 是一切对象的默认值
只能通过 == != 来操作 其他都会报空指针异常