IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> javase基础知识 -> 正文阅读

[Java知识库]javase基础知识

java虚拟机

JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的 运行环境,是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在 JVM 之上。

跨平台:任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以运行在任何的操作系 统上,这个特性称为Java语言的跨平台特性。该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM 运行在操作系统上。

Java的虚拟机本身不具备跨平台功能的,每个操作系统下都有不同版本的虚拟机

在这里插入图片描述

jre jdk

JRE (Java Runtime Environment) :是Java程序的运行时环境,包含 JVM 和运行时所需要的 核心类库 。

JDK (Java Development Kit):是Java程序开发工具包,包含 JRE 和开发人员使用的工具。

我们想要运行一个已有的Java程序,那么只需安装 JRE 即可。
我们想要开发一个全新的Java程序,那么必须安装 JDK 。

java程序开发步骤

编写、编译、运行。

在这里插入图片描述
Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再通过Java虚拟机解释成机器码运行。

字节码文件是经过编译器预处理过的一种文件,是JAVA的执行文件存在形式。

什么是java虚拟机?为什么java被称作是跨平台的编程语言?

JVM是Java Virtual Machine(Java虚拟机)的缩写,它是一个虚构出来的计算机,是用来运行java的字节码文件的。

java的跨平台实际上指的是字节码文件的跨平台,字节码文件是运行在jvm上的,与平台无关。
不同的操作系统有相对应的jvm,一套相同的字节码文件经过不同的jvm解释成相对应的机器码执行,这就是跨平台。

什么是机器码?

完全依附硬件而存在~并且不同硬件由于内嵌指令集不同,即使相同的0 1代码 意思也可能是不同的~换句话说,根本不存在跨平台性~比如~不同型号的CPU,你给他个指令10001101,他们可能会解析为不同的结果~

java基本数据类型

Java中的默认类型:整数类型是 int 、浮点类型是 double 。

虽然float占4个字节,但是采用科学技术法,取值范围远远大于8个字节的long

在这里插入图片描述

数据类型转换

Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。

自动转换

当表达式两边数据类型不一致时,取值范围小的数据或者变量,可以直接赋值给取值范围大的变量
  1. 不需要进行代码的特殊处理
  2. byte,short,char数据,只要参加运算,就会自动转换成int类型
  3. 表达式最终的数据类型,一定是表达式中取值范围最大的类型
    byte、short、char -> int -> long -> float -> double
// 左边是long类型,右边默认是int类型,两边数据类型不一致
// 取值范围小的数据或者变量,可以直接赋值给取值范围大的变量

// int --> long,自动类型转换
// int4个字节,long8个字节,
// 自动类型转换只需要在前面补充4个字节的0,对值并没有影响
long num = 100;

double num = 100;

在这里插入图片描述

强制转换

浮点转换成整数,直接取消小数点,可能造成数据损失精度。
// 左边是byte类型,占一个字节,右边是int类型,占4个字节
// 从小到大的类型可以在前面添加缺少字节的数量的0
// 从大到小,需要强制类型转换,字节就会从左边开始被削减
int num = (int)6000000000L;

在这里插入图片描述

常量和变量的运算的注意事项

// 左边byte取值范围小,右边int取值范围大,理论说应该报错,但实际并没有
// 这么赋值的话,1代表着常量的角色
// 整数常量只要不超出对应的赋值变量的范围,可以直接赋值,相当于隐藏了一个强制类型转换
byte a = 1;

byte b = 2;

// 这个也不会报错,此时的 1 2 也属于常量,并且运算后的值也没有超出byte的范围
byte c = 1 + 2;

// a b 均为变量,值可能会超出byte的范围,所以这个不会自动强制类型转换,是报错的
byte d = a + b;

java运算符

++ - -

  1. 单独使用a++,a- -,++a,- -a,是没有区别的,都是加1,或者减1

  2. 和其他操作(赋值,打印)一起使用,

    • 加减在前,先加减,后赋值
    • 加减在后,先赋值,后加减
int a = 1;
a++;
// 2
sout(a)

int b = 1;
int c = ++b;

// 2
sout(b);
// 2
sout(c)

int d = 1;
int e = d++;

// 2
sout(d)
// 1
sout(e)

复合赋值运算符

+=,-=,*=,/=,%=

int a = 1;
int b =2;
// a = a + b;
int a += b;

// 复合赋值运算符,如果数据类型不一致,会发生强制类型转换(隐藏的)
// 相当于 byte s = (byte)200;

逻辑运算符的短路效果

and,表达式左边为false,右边不计算
or,表达式左边为true,右边不计算

三元运算符

int a = true ? 1 : 2;

java流程控制语句

switch

  1. case后面的常量值不能重复,case后不写break,匹配成功依然会对下一个case值进行匹配,这叫case穿透
  2. switch后面表达式的数据类型:byte/short/char int String 枚举
  3. default:所有值都不匹配时,执行这个
public static void main(String[] args) {
    int month = 3;
    switch (month) {
        case 12:
        case 1:
        case 2:
            System.out.println("冬季");
            break;
        case 3:
        case 4:
        case 5:
            System.out.println("春季");
            break;
        case 6:
        case 7:
        case 8:
            System.out.println("夏季");
            break;
        case 9:
        case 10:
        case 11:
            System.out.println("秋季");
            break;
        default:
            System.out.println("火星来的吧,滚...");
            break;

    }
    System.out.println("game...over...");
}

部分知识引用自:
https://baijiahao.baidu.com/s?id=1614769568984126810&wfr=spider&for=pc(java的方法中是引用传递还是值传递)
https://www.nowcoder.com/questionTerminal/a90230b35b5f4a7287f779ecdd88841d
https://blog.csdn.net/u010945925/article/details/9050917

在农村讲知识,是过不了日子的。

一位左右为难的一分钱都没有的母亲

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-27 10:57:09  更:2022-02-27 10:58:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:00:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码