JDK安装,基本数据类型和运算
一 Java语言的初体验
1.JDK下载地址
Oracle官网: Java Downloads | Oracle,根据需要,下载最新或历史版本。
2.运行Java文件
编写一个简单的 HelloWorld.java
文件
public class HelloWorld{
public static void main(String [] args){
System.out.println("Hello,World.Shawn");
}
}
使用 javac
命令编译成字节码文件(.class)
,然后使用 java
命令运行。
# 1.编译
javac HelloWorld.java
# 2.运行 HelloWorld.class(不加后缀名)
java HelloWorld
javac
:JDK提供的编译工具java
:JDK提供的运行,调试工具- 字节码:经过
javac
编译后的Java
文件
javac.exe 与 java.exe 位于JDK的安装目录下
3.环境变量
如果想要在任意目录下打开指定的软件,就可以将软件的路径配置到环境变量 path
中
其中 JAVA_HOME
的值为JDK安装的根目录
需要注意的是,从 JDK11 开始,将不再需要手动配置Path路径,安装完JDK之后,会自动配置。
默认路径为:
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
需要注意的是,JDK 默认只提供了以上几个工具,如果想要使用其他的工具,可以使用以下两种方式:
- 将需要使用的工具复制到上面的路径下
- 使用之前的
JAVA_HOME+Path
方式配置,即新建一个JAVA_HOME
的系统变量,然后变量值为安装JDK
的根目录,然后再将JAVA_HOME
配置到Path
中
二 Java语言介绍
1.Java语言的发展
2.Java语言可以做什么
1.JavaSE
Java SE
是Java
语言的标准版,用于桌面应用的开发,是Java
其他两个版本的基础。
2.JavaME
Java ME
是Java语言的小型版,用于嵌入式电子设备或者小型移动设备
3.JavaEE
Java EE
是 Java 语言的企业版,用于 Web 方向的网站开发。
4.Java跨平台原理
Java 语言的跨平台,是通过 JVM(Java虚拟机)
来实现的。
Java 不是直接运行在操作系统上,而是运行在操作系统对应的 JVM(Java虚拟机)
上。
3.JDK 与 JRE
JRE:JRE是指 Java 的运行环境
JDK:JDK 是 Java 的开发工具包
JVM:Java 程序真正运行的地方
JDK,JRE,JVM 三者的关系?
- JDK 包含了 JRE
- JRE 包含了 JVM
三 Java 基础语法
1.注释和关键字
注释:
- 单行注释: // 注释文字
- 多行注释: /* 注释文字 */
- 文档注释: /** 注释文字 */
关键字:Java语言体系中,被赋予了特殊含义的英文单词
Class:类,是 Java 中最基本的组成单元
2.字面量
字面量
是用于表达源代码中一个固定值的表示法。
字面量的类型:
- byte:8位
- short:16位
- int:32位
- long:64
- float
- double
- boolean
- char
一个字节占用8位
3.特殊字符
- \t:制表符,打印时将前面字符串的长度,使用空格补齐到 8 位,最少补1个空格,最多补8个空格
- \n:换行符
- \r:回车符
4.变量
修饰符 数据类型 变量名 = 数据值;
- 数据类型:限制变量能存储的数据类型
- 修饰符:限定访问范围或是否允许修改,是否静态等
5.计算机存储规则
计算机中的数据,都是以二进制
的形式来存储的
常见的进制:
- 二进制:0~1,代码中以
0b
作为开头 - 八进制:0~7,代码中以
0
开头 - 十进制:0~9
- 十六进制:09,af,代码中以
0x
开头
1.任意进制转十进制
公式:系数*基数的全次幂 相加
- 系数:每一位上的数
- 基数:当前的进制数
- 权:从右往左,0,1,2,3,4,…
2.十进制转任意进制
除基取余法:不断的除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼接起来即可。
3.ASCII码表
字母是通过ASCII码表中对应的二进制存储到计算机中的
4.图片数据的存储
- 黑白图:通过 0 和 1区分黑色白色
- 灰度图:使用0~255表示不同的灰度数据
- 彩色图:利用
光学三原色(红绿蓝)
的不同搭配,来实现各种颜色
光学三原色:红®绿(G)蓝(B),即常用的RGB颜色,例如:rgb(255,255,255)
当使用十六进制
表示时,取值范围为0~FF,则 rgb(255,255,255)
表示为ffffff
5.声音的存储
对声音的波形图
进行采样来存储音频文件,其中波上的每一个点都有一个对应的数据。
形成波的点越多,则对音频文件的还原越好。
6.标识符及命名规则
命名规则:
- 由数字,字母,下划线(_) 和 美元符($) 组成
- 不能以数字开头
- 不能是关键字
- 区分大小写
7.键盘录入
使用Scanner
类来实现键盘的录入
简单示例:
Scanner scanner=new Scanner(System.in);
String str = scanner.next();
System.out.println(str);
四 运算符及类型转换
1.算数运算符
加(+),减(-),乘(*),除(/),取模(%)
自增(++),自减(–)
2.类型转换
- 隐式转换:取值范围小的,可直接转换成取值范围大的,无需手动操作,称之为自动类型提升
- 显示转换:从大到小的转换,会丢失精度
3.赋值运算符
4.逻辑运算法
5.短路逻辑运算符
- &&:左边为 false ,则全部为 false
- ||:左边为 true, 则全部为 true
五 原码反码补码
1.原码
原码是十进制数据的二进制表现形式,最左边为符号位,0 表示 正数,1 表示 负数
一个字节占8个比特位,其中第一位是符号位
使用原码在进行 正数
的计算时是没有问题的,但是在 负数
计算时,计算结果却与预期结果完全相反
#正数示例 1+1=2
00000001 + 00000001 = 00000010 十进制为 2
#负数示例 -1+1=0
10000001 + 00000001 = 10000010 预期值为 0 , 但是计算的实际值却是 -2
2.反码
反码是为了解决原码不能计算负数问题而出现的。
计算规则:
- 正数的反码不变
- 负数的反码,是在原码的基础上,
符号位不变,但是数据取反,0 变 1 , 1 变 0
使用反码进行计算示例:
# 求 -2 的 反码
1000010 的 反码 为 11111101
# 计算 -2 + 1 = -1
11111101
+ 00000001
--------------
= 11111110
# 还原计算结果为 原码
10000001 = -1
使用反码还原时,规则也是 符号位不变,但是数据取反,0 变 1 , 1 变 0
特殊情况:使用反码进行计算,结果跨 0 时,依然会出现问题。
负数计算跨0出现问题的根本原因在于,0 的反码有两个:00000000 和 11111111
3.补码
负数的补码 = 负数的反码 + 1,用来屏蔽 +0 与 -0 的特殊情况
负数的补码 = 负数的反码 + 1,正数的原码,反码,补码都是一样
另外补码还能多记录一个特殊的值:-128,该数据在 1 个字节下,没有原码和反码
负数跨0计算示例:
# 计算 -2 的 反码
1000010 的 反码 为 11111101
# 计算 -2 的 补码
11111101 + 1 = 11111110
# 计算 -2 + 3 = 1
11111110
+ 00000011
--------------
= 00000001
# 符号位为 0 表示为 正数,正数的原码、反码、补码都是一样,则 00000001 转换为十进制为 1
计算机中实际的计算都是以补码的形式来计算的
4.位运算
1.逻辑与
#都为 1 时 ,结果为 1,其他均为 0
00000010
& 00000011
--------------
= 00000010 = 2
2.逻辑或
#都为 0 时 ,结果为 0,其他均为 1
00000010
| 00000011
--------------
= 00000011 = 3
3.左位移
向左移动,低位补 0,低位指右侧位
#向左移动,低位补0
2<<2=8
-----------
00000010
<< 2
--------------
= 00001100 = 8
4.右位移
向右移动,高位补 0 或 1,即原本为正则补 0,为负则补 1
#向右移动,高位补 0 或 1,即原本为正则补0,为负则补1
6>>2=1
-----------
00000110
>> 2
--------------
= 00000001 = 1
5.无符号右移
无视符号,直接移动,高位补0