【Java基础】Java基础知识 && 字面量 && 数据类型 && 强制转换 && 运算符

0. Java三大平台

  • Java SE:Java Standard Edition,Java标准版,用于桌面应用的开发,是其他两个版本的基础。
  • Java ME:Java Micro Edition,Java小型版,用于嵌入式消费类电子设备的开发。(已经被android和ios取代,不再使用)
  • Java EE:Java Enterprise Edition,Java企业版,用于Web方向的网站开发。
    网页:用于数据展示
    网站:网页+后台服务器

1. JVM JRE JDK三者的作用和关系

  • JDK: java development kit, java开发工具包,用来开发Java程序的,针对java开发者;
    JDK 即为 Java 开发工具包,包含编写 Java 程序所必须的编译、运行等开发工具以及 JRE。开发工具如:用于编译 Java 程序的 javac 命令;用于启动 JVM 运行 Java 程序的 Java 命令;用于生成文档的 Javadoc 命令;用于打包的 jar 命令等等。
    JDK 包含 JRE 包含 JVM
  • JRE: java runtime environment, java运行时环境,针对java用户;
    JRE 即为 Java 运行环境,提供了运行 Java 应用程序所必须的软件环境,包含有 Java 虚拟机(JVM)和丰富的系统类库。系统类库即为 Java 提前封装好的功能类,只需拿来直接使用即可,可以大大的提高开发效率。
    JRE 包含 JVM
  • JVM: java virtual machine,java虚拟机,用来解释执行字节码文件(class文件)的。

2. Java跨平台性的原理

平台指的是操作系统,Windows、 Linux、macOS
跨平台性指的是Java应用程序可以在任意操作系统上运行

  • 在需要运行Java应用程序的操作系统上,安装一个与操作系统对应的Java虚拟机(Java Virtual Machine)即可

3. 字面量

字面量、常量、字面值常量都是一个意思,学习数据在程序中的书写格式

Java的常量优化机制

在编译时生成字节码文件时,会自动将字面量进行计算、拼接等。

  • byte、short、char常量的优化机制:

由于byte、short、char三种数据类型在运算时存在的隐式转换,会自动转换为int类型(见下文),因此下面情况会出错:

byte a = 10;
byte b = 5;
byte c = a + b; // 报错!!

但当运算时只包含字面量时则由于常量优化机制的存在不会报错

byte b = 3 + 4; // 不会报错

  • String常量的优化机制:
    如果全部是String常量进行拼接,那么在编译生成字节码文件时会自动编译拼接后的String常量
String s1 = "abc";
String s2 = "a" + "b" + "c"; //产生的字节码文件:String s2 = "abc";
System.out.println(s1 == s2); //return true

4. 数据类型

  • 基本数据类型
  • 引用数据类型
    (1)数组
    (2)类
    (3)接口

5. 类型转换

隐式转换

  • float虽然只占用4个字节,但是取值范围比long大,因为小数占用的存储空间很小

强制转换
取值范围大的数据类型赋值给取值范围小的数据类型,这是不被允许的,需要进行强制转换,[有可能]会出现精度损失

强制转换的精度损失
十进制(默认)
二进制:以0b开头
八进制:以0开头
十六进制:以0x开头

  • 字节以二进制存储
  • 计算机中的运算都是以二进制补码的形式进行运算

6. 运算符

比较运算符
==:判断引用数据类型,比较的是地址;判断基本数据类型,比较的是数值

扩展赋值运算符
+=、-=、*=、/= ...
扩展赋值运算符,内部自带强制类型转换效果

关系运算符
&、|:两边都要执行
&&、||:短路运算符

位运算符
>>表示右移,如果该数为正,则高位补0,若为负数,则高位补1;
>>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。

运算符优先级

posted @ 2023-11-16 14:01  沙汀鱼  阅读(15)  评论(0编辑  收藏  举报