当前位置: 首页 > news >正文

Java基础12

一、Java特性在这里插入图片描述

JAVA简单,面向对象编程语言,不依赖平台,被编译被解释,健壮性,垃圾回收机制,多线程,分布式,安全

二、Java架构

在这里插入图片描述

源文件–>编译器–>类文件–>JVM–>操作系统和硬件–>输出

在这里插入图片描述

1、源文件:
Java应用程序包含源代码,该代码保存在扩展名为.Java的源文件中。

2、类文件:
编译为生成.class文件的.java文件包含字节码。此文件由支持JRE的任何计算机执行。

3、JDK,JRE,JVM的概念:

在这里插入图片描述

JDK(Java Development Kit,Java开发工具包) ,是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库,包含JVM标准实现及Java核心类库。

JRE(Java Runtime Environment Java运行环境) ,是 JDK 的子集,也就是包括 JRE 所有内容,以及开发应用程序所需的编译器和调试器等工具。

JVM(Java Virtual Machine,Java虚拟机), 是JRE的一部分。它是整个Java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行Java字节码文件的虚拟计算机。

4、JDK JRE JVM区别和联系:

在这里插入图片描述

JDK=Java开发工具+JRE

JRE=JVM+Java类库

JDK 用于开发,JRE 用于运行Java程序 ;如果只是运行Java程序,可以只安装JRE,无序安装JDK。

JDK包含JRE,JDK 和 JRE 中都包含 JVM。

JVM 是 Java 编程语言的核心并且具有平台独立性。

三、Java变量

在这里插入图片描述
1、规范

变量名的开头必须是:英文字母、下划线、符号。
其余部分内容可以是:英文字母、下划线 、符号、数字。
规范的变量名以小写字母开头。
不能使用Java关键字作为变量名,例如:public、static、do、while、for、void等。

2、定义

数据类型 变量名 = 值

三、数据类型

在这里插入图片描述

1、基本数据类型

基本数据类型是CPU可以直接进行运算的数据类型。
java中定义了以下8种基本数据类型:

在这里插入图片描述
1)数值型:
a)整数类型:byte(1个字节),short(2个字节),int(4个字节),long(8个字节)
b)浮点数类型:float(4个字节),double(8个字节)

2)非数值型:
a)字符类型:char(2个字节)
b)布尔类型:boolean

2、引用类型

除了上述8种基本数据类型以外,其余类型均为“引用数据类型”,最常见的引用数据类型是String字符串,Array数组。

四、Java注释

有三种注释:单行注释,多行注释与文档注释

1、单行注释 //,最常用的注释,其注释内容从 // 开始到本行结尾。
2、多行注释 从 /* 开始直至第一个 */ 出现都属于多行注释,但多行注释不能嵌套,多行注释也可以注释掉不需要的代码
3、文档注释 可以自动地生成文档,可以用javadoc命令生成html,这种注释以 /** 开始,以 */ 结束

/**
 * 这就是传说中的文档注释
 * @author 作者方艺璇
 * 可以自动生成文档
 */

public class Hello{
 public static void main(String[] args){
        //这是单行注释,一行结束
  System.out.println("你好");
 /*多行注释开始
        System.out.println("你好");
  System.out.println("你好");
  这里都是多行注释
  结束
 */
 }
}

五、Java类型转换
1、介绍

Java 中的类型强制转换(Type Casting)可以分为基本类型(primitive types)的强制转换和引用类型(reference types)的强制转换。它们在底层的原理和实现有所不同。

2、基本类型的强制转换

基本类型的强制转换涉及数值类型(如 int, float, double)之间的转换。基本类型的转换分为两类:自动类型转换(Widening Casting)和强制类型转换(Narrowing Casting)

1)自动类型转换(Widening Casting)

自动类型转换是将一个较小范围的基本类型转换为较大范围的基本类型。这种转换是自动进行的,不需要显式的强制转换操作符

int i = 100;
long l = i; // 自动类型转换
double d = l; // 自动类型转换

底层原理:
在自动类型转换中,Java 编译器会在编译时检查转换是否合法,并在运行时进行必要的数值扩展。例如,将 int 转换为 long 时,Java 会将 int 值扩展为 long 值

2)强制类型转换(Narrowing Casting)

强制类型转换是将一个较大范围的基本类型转换为较小范围的基本类型。这种转换需要显式地使用强制转换操作符

double d = 100.04;
long l = (long) d; // 强制类型转换
int i = (int) l; // 强制类型转换

底层原理:
在强制类型转换中,Java 编译器同样会在编译时检查转换是否合法。在运行时,Java 会进行数值截断或舍入。例如,将 double 转换为 int 时,小数部分会被截断

3、引用类型的强制转换

引用类型的强制转换涉及类和接口之间的转换。
主要分为向上转型(Upcasting)和向下转型(Downcasting),后面再学

六、Java操作符
1、算术运算符

在这里插入图片描述

算术运算符都是双目运算符,即连接两个操作数的运算符。优先级上,*、/、% 具有相同运算级别,并高于 +、-(+、- 具有相同级别)

加法运算:+
减法运算:-
乘法运算:*
除法运算:/,(另外,整型之间的除法运算是整除,这也就意味着2 / 4的结果为0,如果我们想像数学一样得到一个小数,可以使用浮点类型的操作数。)
取模运算:%(要求两个整型数字相除取余数)

2、自增(++)、自减(- -)运算符

在这里插入图片描述

++ 或 - - 是单目运算符,放在操作数的前面或后面都是允许的。
++运算,变量自增长1;- -运算,变量自减少1。

那么如果有一个变量i,++i和i++有什么区别呢?
独立运算时:i++和++i没有区别,都是实现自动加1的功能
混合运算时:i++和++i就不同了

1、++/- -在先运算后取值

int a = 1;
int b = ++a;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是2

前++/- -时,就相当于变量a先自增1,再把值赋给b;

2、++/- -在先取值后运算

int a = 1;
int b = a++; //这就等价于 int b=a;a=a+1;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是1

后++/- -时,就相当于变量a先把值赋给b,再自增1;

3、赋值运算符

赋值运算符是指为变量或常量指定数值的符号。赋值运算符的符号为“=”,例如 int a=2.
它是双目运算符,左边的操作数必须是变量,不能是常量或表达式。

记住在Java中两个数相等用的符号是==,而=是赋值运算符。
例如 int a=1,int b=1,如果表示a等于b,则是a==b

4、关系运算符

在这里插入图片描述

关系运算符用来比较两个值的关系。关系运算符是二元运算符,运算结果是 boolean 型。当运算符对应的关系成立时,运算结果是 true,否则是 false。

相等:==(如果判断正确结果为true)
小于号:<
大于号:>
小于等于:<=
大于等于:>=
不等于:!=

比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值true或者false

public static void main(String[] args) {
    System.out.println(1==1);//true
    System.out.println(1<2);//true
    System.out.println(3>4);//false
    System.out.println(3<=4);//true
    System.out.println(3>=4);//false
    System.out.println(3!=4);//true
}
5、逻辑运算符

&& 和运算
|| 或运算
!否运算
其实也就是数学里面学到的逻辑运算:与、或、非

//逻辑与&&(并且) 一假即假,全真才是真
System.out.println(true && true);//true
System.out.println(true && false);//false
System.out.println(false && true);//false
  //逻辑或||(或者)一真即真,全假才是假
System.out.println(false || false);//falase
System.out.println(false || true);//true
System.out.println(true || false);//true
    //逻辑非!(取对立)
System.out.println(!false);//true
6、三元运算符

我们都接触过考试,一般都是60分及格。
也就是说分数大于或等于60时,及格;分数小于60时,不及格。
这种在生活中常见的情况在程序里是如何表现的的?

这就需要三元运算符了。
当一个布尔表达式的结果分别对应两种情况时,可以使用三元表达式。
该运算符由三个操作数组成,用于判断布尔表达式。它的目的是确定应将哪个值分配给变量。条件运算符的语法为:

变量 = (布尔表达式) ? 值1 : 值2

在这里插入图片描述

7、instanceof 运算符

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
instanceof运算符使用格式如下:

( Object reference variable ) instanceof  (class/interface type)

如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。

下面是一个例子:

String name = "Agatha";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真

相关文章:

  • 【Python运维】深入分析Python运维工具:用psutil监控系统性能
  • 金蝶ERP星空对接流程
  • 机器学习11-经典网络解析
  • (1)udp双向通信(2)udp实现文件复制(3)udp实现聊天室
  • 解锁数据抓取新高度:Python 分布式爬虫与逆向进阶实战课
  • 详解 scanf 和 printf(占位符、printf、scanf的返回值、printf的输出格式、scanf的输入格式)
  • oracle官网下载各种版本的Java
  • 大白话css第八章前沿技术深度应用、行业影响力塑造以及对CSS未来发展的引领
  • 如何理解数据库的几种事务隔离级别?以及如何理解脏读、不可重复度、幻读?
  • Vue 3 组件库文档化最佳实践:Storybook 自动化文档生成 - 打造专业级组件文档
  • 洛谷 P1601 A+B Problem(高精)详解c++
  • lamp平台介绍
  • 【力扣】136.只出现一次的数字
  • 麒麟V10-SP2-x86_64架构系统下通过KVM创建虚拟机及配置虚机的NAT、Bridge两种网络模式全过程
  • pthon翻译googletrans案例
  • 高级课第五次作业
  • flink和yarn和mpp架构区别
  • 【菜笔cf刷题日常-1600】C. Balanced Stone Heaps(二分求min/max)
  • Linux -- I/O接口,文件标识符fd、file结构体、缓冲区、重定向、简单封装C文件接口
  • MySQL实现文档全文搜索,分词匹配多段落重排展示,知识库搜索原理分享
  • 网站开发的基本原则/烟台seo网络推广
  • fomo3d网站开发/朝阳网站建设
  • 黑彩网站自己可以做么/类似火脉的推广平台
  • 写作网站挣钱对比/全球最大的中文搜索引擎
  • 手机维修网站那个公司做的/网站推广方案策划
  • 商业网站设计的基本原则/爱战网官网