Java重学—基础知识

189 阅读7分钟

这是我参与更文挑战的第22天,活动详情查看: 更文挑战

1, 前置学习

1, 位(bit) 一个数字0 或者一个数字1 ,代表一位

2,字节(Byte) 每逢8位是一个字节,这是数据存储的最小单位

1 Byte = 8 bit
1KB = 1024 Byte
1MB= 1024KB
1GB= 1024MB
1TB= 1024GB 
1PB= 1024TB

3, CMD快捷键

1, 进入多级文件夹
  cd a\b\c
2, 回到根目录
  cd \
3, 显示目录
  dir
4, 快速打开cmd
  (1) win + R   输入 cmd
  (2) 选择文件夹地址栏  直接输入 cmd 回车
5, 清屏
   cls
6, 退出
   exit

2, Java虚拟机

  • 虚拟机(JVM)是运行所有Java程序的假象计算机,是java程序运行的环境,也是Java最具有吸引力的特性之一,我们编写的Java代码,都运行在JVM之上

  • 跨平台 :Java编写的软件可以运行在任何操作系统上,这个特性称为java语音的跨平台特性,改特性是有JVM实现的,我们编写的程序运行在JVM上,而JVM运行在操作系统上。

     注意: JVM虚拟机本身不具备跨平台功能的,每一个操作系统下都有不同版本的虚拟机,
     windows系统有win版的JVM, 
     linux系统有linux版本的JVM,
     MAC系统有mac版本的虚拟
    

3, JRE 和 JDK

  • JRE(Java Runtime Environment): 是Java程序的运行时环境,包含JVM和运行时所需要的核心类库
  • JDK(Java Development Kit): 是Java程序员开发工具包,包含JRE和开发人员使用的工具

前端同学可以理解为:JRE等同于前端的浏览器或者是nodejs

1, 如果我们想运行一个已有的Java的程序,那么只需要安装JRE即可
2, 如果我们想开发一个全新的Java程序,那么我们必须安装JDK工具包

JDK,JRE,JVM三者之间的关系如图:

微信图片_20210621234400.png

4, JDK下载

https://www.oracle.com/java/technologies/javase-jdk16-downloads.html

window版本下载:jdk-16.0.1_windows-x64_bin.exe

mac版本下载:jdk-16.0.1_osx-x64_bin.dmg

1, 打开我的电脑—> 高级配置—> 环境配置—> 系统变量—> 点击新建

变量名:JAVA_HOME

变量值:C:\Java\jdk-16.0.1\bin

2, 双击PATH

新建: %JAVA_HOME%

3, 关闭所有的CMD窗口

4, 打开新建CMD

输入:java --version
java 16.0.1 2021-04-20
Java(TM) SE Runtime Environment (build 16.0.1+9-24)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)

5, Hello World

开发环境搭建完之后,Java程序开发的三步骤: 编写,编译,运行

编写:Java源程序

编译: Javac.exe 编译器 —> 生成 java字节码文件 .class文件

运行:java.exe 解释器, 在JVM上运行,解释.class文件

public class HelloWorld {
  public static void main(String[] args) {
     System.out.println("Hello World");
  }
}
C:\>javac HelloWorld.java
C:\>java HelloWorld
Hello World

注意: main方法是所有程序代码执行的起点

6, 基础知识

(1)关键字

关键字特点:
1, 完全小写的纯英文字母
2, 常见的关键字
public class main 太多,可自寻查询

(2)标识符

程序中自己定义的类名字,方法名字,变量名称都是标识符

1, 标识符可以包含英文字母,0-9数字,$ 美元符合, _ 下划线
2, 标识符不能以数字开头
3, 标识符不能是关键字

(3)命名规范

类名规范: 首字母大写,后面每个单词字母大写, 又称:大驼峰式
变量规范: 首字母小写,后面每个单词字母大写, 又称:小驼峰式
方法规范: 小驼峰式

(4)常量

在程序运行期间,固定不变的量

1, 字符串常量:凡是用双引号引起来的部分,叫做:字符串常量, 例如: “abc", "hello"
2, 整数常量:直接写上的数字,没有小数点, 例如: 100200
3, 浮点数常量:直接写上的数字,有小数点, 例如: 1.53.14, -1.1
4, 字符常量:凡是用单引号引起来的单个字符,就叫做:字符常量, 例如: 'A', 'b' '中'
5, 布尔常量:true , false
6, 空常量: null 表示没有任何数据

注意: 字符串常量和字符串常量, 在前端同学眼里, 这两个是一样的,Java 语音是有区别的,且:两个单引号中间必须有且仅有一个字符,没有不行,有多个也不行

基本数据类型

整数型:byte, short, int, long
浮点型:float, double
字符型: char
布尔型: boolean

引用数据类型

字符串, 数组, 类, 接口, Lamba
数据类型关键字内存占用取值范围
字节型byte1个字节-128~127
短整型short2个字节-32768~32767
整型int4个字节负的2的63次方~2的63次方-1
长整型long8个字节
单精度浮点数float4个字节
双精度浮点数double8个字节
字符型char2个字节0~65535
布尔型boolean1个字节true, false

注意:

1, 字符串不是基本类型,而是引用类型
2,浮点类型可能只是一个近似值,并非精确的值
3,数据范围与字节数不一定相关,float数据范围比long更加广泛,但是float4字节,long8字节
4,浮点数默认类型:double, 如果一定要使用float类型,需要加上一个后缀:F
5,整数类型默认类型:int, 如果一定要使用long类型,需要加上一个后缀:L,  推荐使用大写字母后缀

(5)变量

程序运行期间,内容可以发生改变的量

创建一个变量并且使用的格式:

数据类型 变量名称 = 数据值;
创建变量注意事项:
1, 如果创建多个变量,那么变量之间名称不能重复
2,对于float, long类型来说,字母后缀F和L不能丢掉
3,如果使用byte, short类型的变量,那么右侧的数据值不能超过左侧类型的范围
4,没有进行赋值的变量,不能直接使用,一定要赋值之后才能使用
5,变量使用不能超过作用域的访问
  什么是作用域?
  从定义变量的一行开始,一直到直接所属的大括号结束为止。

(6)类型转换

1, 自动类型转换(隐式)

1, 特点: 代码不需要进行特殊处理,自动完成
2, 规则: 数据范围从小到大

2,强制类型转换(显示)

1, 特点: 代码需要进行特殊的格式处理,不能自动完成
2,规则: 范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据
  int num = (int) 100L;
注意:强制转换容易导致数据溢出, 精度损失
     byte/short/char 这三种类型都可以发生数学运算, 在运算的时候,都会被首先提升成为int类型

(7)ASCII码表

常用的:
48: 0
491
65:A
66: B
97: a
98: b

(8)运算符

1,/   取商
2,%   取余数
3,运算当中有不同类型的数据,那么结果将会是数据类型范围大的那个
4,任何数据类型和字符串进行连接的时候,结果都会变成字符串
5, 单独使用:num++ , 和 ++num 没啥区别
   混合使用:++前,那么变量立刻加 +1, 然后在拿着结果进行使用
           后++, 那么首先使用变量本来的值,然后再让变量加+1
6,只有变量才能使用赋值运算符,常量不能进行赋值
   a +=3  相当于   a = a + 3
   b -=3  相当于   b = b - 3
   c *=3  相当于   c = c * 3
   d /=3  相当于   d = d / 3
7,&& 全都是true, 才是true
   || 至少有一个是true, 才是true
   !  本来是true, 变成false
8, 三元运算符:  数据类型 变量名称 = 条件判断 ? 表达式A :表达式B;
   注意事项:必须同时保证表达式A和表达式B都符合左侧数据类型的要求
9

7, jshell

什么时候用jshell工具,简单的测试可以jshell

打开cmd, 直接输入jshell

C:\WINDOWS\system32>jshell
|  欢迎使用 JShell -- 版本 16.0.1
|  要大致了解该版本, 请键入: /help intro

jshell>

注意事项:

1, 如果byte,short,char三种类型,右侧赋值的数值没有超过范围,那么javac编译器会自动的隐含的为我们补上一个(byte)(short)(char),也就是强转。

8, 总结

不想成为全栈的前端不是好前端。