Java某课学习总结 第一节

149 阅读5分钟

该文章只是个人学习总结 可能存在不正确的知识点 欢迎大家指点

认识JVM/JVR/JDK

JVM(java virtual machine)

JVM是java虚拟机 因为要将java运行在多个多个平台 所以需要虚拟机运行java 保证多个平台 运行效果是一样的

Java程序的执行过程

源代码文件(*.java)通过编译器(compiler)编译成字节码文件(*.class)然后给解释器(interperter)解释成机器语言给JVM执行

(这里有过程图)

JRE(java Runtime Environment)

  • 包含java虚拟机/java核心类库和支持文件
  • 运行java程序 只要有JRE就可以

JDK(java Development Kit)

  • 运行java软件 就用JDK
  • JDK附带JRE

java语言的软件开发工具包

两个主要组件:

  • javac - 编译器, 将源代码转成字节码
  • java 运行编译后的java程序(.class后缀)

JDE是面向开发程序

JDK是面向开发者

JVM/JRE/JDK的关系

JDK包含JRE JRE包含JDK

Java平台

  • javaSE
    • 标准版
    • 桌面程序
    • 基于JDK和JRE
  • javaEE
    • 企业版
    • WEB程序
  • javaME
    • 微型版
    • 移动版

第一个程序

1 创建java后缀的文件

// HelloWorld.java

public class HelloWorld {
	public static void main(String[] args){
		System.out.prinlnt("hello world");
	}
}

2 编译java文件

# 在刚刚文件的同级目录中使用 javac 对java文件进行编译
# 如果提示javac工具不存在 就要在系统的环境变量中进行配置
$ javac HelloWorld.java

编译成功后 会生成一个HelloWord.class的文件

3 运行编译后的文件

# 使用java运行刚刚编译出来的文件(不加后缀默认是运行*.class)
$ java HelloWord

此时命令行中 就会显示刚刚java文件中执行结果

System.out.prinln() 是将字符串打印到命令行的语句

>>> hello world

数据类型

Untitled.png double类型赋值可以最后面可以带有d或者不带d

double num1 = 3.14;
double num1 = 3.14d;

float类型赋值最后面必须带有f

float num1 = 3.14f;

数据类型转换

隐形类型转换(自动类型转换)

Untitled 1.png

实线 转换的时候不会精度丢失

虚线 转换的时候可能会精度丢失

猜测:int转char 中 范围在0-128 之间用ascll编码 大于这个范围 用unicode编码

强制类型转换

强制类型转换就是上面的图 逆着转换时就要使用强制类型转换

格式: (数据类型)数值

double doubleNum = 3.14;
float floatNum = (double)doubleNum;

数据类型详解

数据类型字节大小说明
byte1字节型
short2短整型
int4整型
long8长整型
float4单精度浮点型
double8双精度浮点型
char2字符型
boolean1布尔型

字面量声明

二进制 0b/0B 开头

八进制 0开头

十六进制 0x/0X 开头

// 二进制
int intNum1 = 0b01;
int intNum2 = 0B01;
// 八进制
int intNum3 = 07;
// 十六进制
int intNum4 = 0x1ad;

基本数据类型变量的存储

作用范围

  • 类级
  • 对象实例级
  • 方法级→ 局部变量
  • 块级

基本数据类型存在

引用数据类型 是把引用存在实际数据存在

常量

使用final关键字用于定义常量

  • 常量定义后就无法改变
  • 初始化时就要赋值
  • 规范是使用全大写
  • 个单词就用下划线连接
final int COUNT = 30;
final int NEW_COUNT = 40;

数值类型的应用场景

整型的应用场景

intlong是常用的数据类型, byteshort使用的比较少, 即使数值比较小也是会使用int

byte类型主要是用于存储二进制数据, 文件的输入输出流会用到, 用于二进制数据的传输

short类型在有些需求会用到 比例登录状态 0 表示正常 1表示冻结 2表示删除, 数值比较固定, 值也比较小

浮点型的应用场景

浮点型有floatdouble

按照表示的范围用于选择, 使用double比较多

由于浮点型表示方式的原因, 会产生精度丢失, 所以会结合BigDecimal类使用

double a = 1.0;
double b = 2.0;
// 这里的Dobule是double关键字的包装类
BigDecimal b1 = new BigDecimal(Dobule.toString(a));
BigDecimal b2 = new BigDecimal(Dobule.toString(b));
// subtract() 方法 是对两个BigDecimal完成减法计算
// doubleValue() 方法 是将BigDecimla转换成double类型的数值
double c = b1.subtract(b2).duobleValue();
// add() 方法 是对两个BigDecimal完成加法计算
double d = b1.add(b2).duobleValue();

// 更多关于BigDecimal类方法请查看官方文档

运算符

  • 算数运算符
  • 逻辑运算符
  • 赋值运算符
  • 关系运算符
  • 判断运算符
  • 位运算符

赋值运算符

= 等号就是赋值运算符

算数运算符

运算符作用
+
-
*
/
%取余

组合赋值运算符

运算符作用
+=先加后赋值
-=减后赋值
*=先乘后赋值
/=先除后赋值
%=先取余后赋值

逻辑运算符

运算符作用
\
||
&
&&
!非 (取反)

逻辑中断 当前面逻辑得出的结果 是可以使整个式子不成立 那么逻辑运算符后面的也不会执行

|和|| 的区别

前者不会有逻辑中断 即使左侧已经运行结束 右侧也会继续运行

后者有逻辑中断 左侧运行结束 如果已经使整个式子不成立 右侧也不会执行

& 和 && 同理

关系运算符

运算符作用
==等于
大于
大于等于
<小于
小于等于

判断运算符

条件 ? 条件为真的处理 : 条件为假的处理

int count = 10
// 如果count是10 那么就会给flag赋值为true 反之
boolean flag =  count == 10 ? true : false;

自增自减运算符

++ /

int count = 10;
System.out.println(count++); // >>> 10
count = 10;
System.out.println(++count); // >>> 11
count = 10;
System.out.println(count--); // >>> 10
count = 10;
System.out.println(--count); // >>> 9

自增自减去运算符在数值的后方 会先执行完当前语句在+1或者-1

而在前方 就会先对值+1或者-1

运算符的优先级

  • 括号
  • 自增/自减运算符
  • 算数运算符
  • 关系运算符
  • 逻辑运算符
  • 赋值运算符/复合赋值运算符