JAVA基础

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 直接运行一个单文件源码
基础
  1. 程序基本结构

    类名 必须以英文字母开头,后接字母 数字 和 下划线的组合
    习惯首字母大写
    
    注意public是访问修饰符,表示该class是公开的
    不写public能正常编译 但这个类将无法从命令行执行
    
  2. 变量和数据类型

基本数据类型:

基本数据类型是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; //long型的结尾要加L
        
        float f = 3.14f; //浮点数的范围是3.4 * 10^38
        double d = -3.45;  // 最大时1.79 * 10^308
    }   
}

引用类型

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 是一切对象的默认值
只能通过 == != 来操作 其他都会报空指针异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰明子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值