JAVA基础教程DAY0-基础知识
JAVA语言的特点
简单性、面向对象、安全性、跨平台性、支持多线程、分布性
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它通过将数据和操作这些数据的方法封装在一起,以创建对象的形式来组织代码。面向对象编程的主要特点包括:
-
封装(Encapsulation):封装是将数据(属性)和操作这些数据的方法(行为)放在一个单元(对象)中。它通过限制对数据的直接访问,只允许通过特定的方法来操作数据,从而提高了代码的安全性和可维护性。
-
继承(Inheritance):继承允许一个类(子类)从另一个类(父类)继承属性和方法。通过继承,子类可以重用父类的代码,同时可以扩展或修改父类的行为。这种特性提高了代码的可重用性和扩展性。
-
多态(Polymorphism):多态性指的是同一个方法在不同对象上可以表现出不同的行为。通过方法重载(同一方法名,不同参数)和方法重写(子类覆盖父类方法),多态性使得代码更加灵活和动态。
JAVA程序的运行流程
-
编写代码:
- 开发者使用文本编辑器编写 Java 源代码,并将其保存为
.java
文件。源代码包含一个或多个类的定义。
- 开发者使用文本编辑器编写 Java 源代码,并将其保存为
-
编译代码:
- 使用
javac
命令编译.java
文件,将 Java 源代码编译成字节码(Bytecode),并生成.class
文件。字节码是一种与平台无关的中间表示形式,Java 虚拟机 (JVM) 能够理解和执行它。class是二进制文件
- 使用
-
类加载(Class Loading):
- Java 类加载器(ClassLoader)负责在运行时动态加载类。类加载器查找并加载
.class
文件到 JVM 中。
- Java 类加载器(ClassLoader)负责在运行时动态加载类。类加载器查找并加载
-
字节码验证(Bytecode Verification):
- 在类加载之后,JVM 运行一个验证器来检查字节码是否符合 Java 语言规范,确保字节码不会破坏 JVM 的安全性和稳定性。验证步骤可以防止恶意代码的注入和执行。
-
准备(Preparation):
- JVM 为类的静态变量分配内存,并将其初始化为默认值。这一步不执行任何程序代码,只是为静态字段分配空间。
-
解析(Resolution):
- JVM 将符号引用(Symbolic References)转换为直接引用(Direct References)。符号引用是类文件中的符号表示(如类名、方法名等),而直接引用是内存地址。解析步骤确保类的正确链接。
-
初始化(Initialization):
- JVM 执行类的初始化代码(如静态初始化块和静态变量的初始化)。这一步将静态变量设置为实际的初始值,并执行任何静态块中的代码。
-
执行(Execution):
- JVM 调用类的
main
方法开始程序的执行。main
方法是程序的入口点,程序的所有逻辑从这里开始运行。
- JVM 调用类的
基本数据类型
Java 有八种基本数据类型:
-
整数类型(Integral Types):
byte
:- 大小:8 位
- 范围:-128 到 127
- 默认值:0
short
:- 大小:16 位
- 范围:-32,768 到 32,767
- 默认值:0
int
:- 大小:32 位
- 范围:-2^31 到 2^31-1
- 默认值:0
long
:- 大小:64 位
- 范围:-2^63 到 2^63-1
- 默认值:0L
-
浮点类型(Floating-Point Types):
float
:- 大小:32 位
- 范围:大约 ±3.40282347E+38F(6-7 位有效数字)
- 默认值:0.0f
double
:- 大小:64 位
- 范围:大约 ±1.79769313486231570E+308(15 位有效数字)
- 默认值:0.0d
-
字符类型(Character Type):
char
:- 大小:16 位
- 范围:0 到 65,535(Unicode 字符)
- 默认值:'\u0000'
-
布尔类型(Boolean Type):
boolean
:- 大小:不确定(依赖于 JVM 实现)
- 值:
true
或false
- 默认值:
false
引用数据类型
引用数据类型指向一个对象,它们是通过类、接口或数组来定义的:
-
类(Class):
- 类是创建对象的模板。每个对象都是一个类的实例。例如:
String str = "Hello, World!";
str
是一个引用数据类型,指向一个String
对象。
- 类是创建对象的模板。每个对象都是一个类的实例。例如:
-
接口(Interface):
- 接口是抽象类型,指定类必须实现的方法。引用数据类型可以是接口类型的对象。例如:
List<String> list = new ArrayList<>();
list
是一个引用数据类型,指向一个实现了List
接口的ArrayList
对象。
- 接口是抽象类型,指定类必须实现的方法。引用数据类型可以是接口类型的对象。例如:
-
数组(Array):
- 数组是一个包含相同类型元素的容器。数组类型也是引用类型。例如:
int[] numbers = {1, 2, 3, 4, 5};
是一个引用数据类型,指向一个包含整数的数组对象。
numbers
- 数组是一个包含相同类型元素的容器。数组类型也是引用类型。例如:
JAVA常见数据类型
访问控制关键字
-
private
:- 访问控制级别:类内部
- 用于声明类的成员(变量或方法)只能在该类内部访问。
-
protected
:- 访问控制级别:同一包内的类和子类
- 用于声明类的成员(变量或方法)可以在同一包内的类和子类中访问。
-
public
:- 访问控制级别:所有类
- 用于声明类、方法或变量可以被所有类访问。
-
default
:- 访问控制级别:同一包内的类
- 用于声明包级别的访问权限。如果未显式指定访问控制关键字,则默认是包级别访问权限。
类、方法和变量修饰符
-
abstract
:- 用于声明抽象类或方法,抽象类不能被实例化,抽象方法必须在子类中实现。
-
class
:- 用于定义一个类。
-
extends
:- 用于声明一个类是另一个类的子类。
-
final
:- 用于声明不可变的类、方法或变量,最终类不能被继承,最终方法不能被重写,最终变量不能被重新赋值。
-
implements
:- 用于声明一个类实现一个或多个接口。
-
interface
:- 用于定义一个接口。
-
static
:- 用于声明类的静态成员,静态成员属于类本身,而不是类的实例。
控制语句
-
break
:- 用于终止循环或 switch 语句。
-
case
:- 用于 switch 语句中,表示一个分支。
-
continue
:- 用于跳过循环中的当前迭代,并开始下一个迭代。
-
default
:- 用于 switch 语句中,表示没有匹配时的默认分支。
-
do
:- 用于定义 do-while 循环。
-
else
:- 用于 if 语句,表示条件为 false 时的执行块。
-
for
:- 用于定义 for 循环。
-
if
:- 用于定义条件语句。
-
return
:- 用于从方法返回值。
-
switch
:- 用于定义多分支条件语句。
-
while
:- 用于定义 while 循环。
异常处理
-
catch
:- 用于捕获异常。
-
finally
:- 用于定义在 try 语句块执行后总是执行的代码块。
-
throw
:- 用于抛出一个异常。
-
throws
:- 用于声明一个方法可能抛出的异常。
-
try
:- 用于定义一个可能抛出异常的代码块。
其他
-
super
:- 用于引用父类的成员(变量或方法)。
-
this
:- 用于引用当前实例的成员(变量或方法)。
-
void
:- 用于声明方法无返回值。
-
package
:- 用于声明类所属的包。
-
import
:- 用于导入其他包或类。
-
new
:- 用于创建新实例。
-
null
:- 表示空引用。
运算符分成以下几组
- 算术运算符
- 关系运算符
- 位运算符
- 逻辑运算符
- 赋值运算符
- 其他运算符
相关文章:
JAVA基础教程DAY0-基础知识
JAVA语言的特点 简单性、面向对象、安全性、跨平台性、支持多线程、分布性 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它通过将数据和操作这些数据的方法封装在一起,以创建对象的形式来组织代…...

鸿蒙开发Ability Kit(程序访问控制):【安全控件概述】
安全控件概述 安全控件是系统提供的一组系统实现的ArkUI组件,应用集成这类组件就可以实现在用户点击后自动授权,而无需弹窗授权。它们可以作为一种“特殊的按钮”融入应用页面,实现用户点击即许可的设计思路。 相较于动态申请权限的方式&am…...

【信息系统项目管理师】18年~23年案例概念型知识
文章目录 18上18下19上19下20上20下21上21下22年上22年下23年上 18上 请简述 ISO 9000 质量管理的原则 领导作用、 过程方法、 管理的系统方法、 与供方互利的关系、 基于事实的决策方法、 持续改进、 全员参与、 以顾客为关注焦点 概念 国家标准(GB/T 1 9000 2008)对质量的定…...
什么是字符串常量池?如何利用它来节省内存?
字符串常量池是Java中一个非常重要的概念,尤其对于理解内存管理和性能优化至关重要。想象一下,你正在管理一家大型图书馆,每天都有无数读者来借阅书籍。 如果每本书每次借阅都需要重新印刷一本,那么图书馆很快就会陷入混乱&#…...

Selenium自动化测试20条常见异常+处理方案
常见的Selenium异常 以下是所有Selenium WebDriver代码中可能发生的一些常见Selenium异常。 1、ElementClickInterceptedException 由于以某种方式隐藏了接收到click命令的元素,因此无法正确执行Element Click命令。 2、ElementNotInteractableException 即使目…...
verilog将信号和常数拼接起来
正确的拼接 1 s_axis_data_tdata {32b0000_0000_0000_0000_0000_0000_0000_0000,32b0011_1111_1000_0000_0000_0000_0000_0000}; 2 注意,信号的两部分都要用{}花括号括起来 s_axis_data_tdata {{32{1b1}},{32b0100_0000_0000_0000_0000_0000_0000_0000}}; 3…...

OpenSSH远程代码执行漏洞 (CVE-2024-6387)
1. 前言 OpenSSH是一套基于安全外壳(SSH)协议的安全网络实用程序,它提供强大的加密功能以确保隐私和安全的文件传输,使其成为远程服务器管理和安全数据通信的必备工具。 OpenSSH 自 1995 年问世近 20 年来,首次出现了…...
高薪程序员必修课-java并发编程的bug源头
前言 Java并发编程虽然强大,但也容易引发复杂的bug。并发编程的bug主要源自以下几个方面:竞态条件、死锁、内存可见性问题和线程饥饿。了解这些bug的源头及其原理,可以帮助开发者避免和解决这些问题。以下是详细的讲解和相应的示例。 1. 竞态…...
c++:#include 某文件.h底层如何寻找其.cpp实现
在C中,当你编写了一个头文件(如MyLibrary.h)和对应的实现文件(如MyLibrary.cpp)时,其他源文件(如main.cpp)只需要包含头文件(#include "MyLibrary.h"ÿ…...

uniapp中如何进行微信小程序的分包
思路:在uniapp中对微信小程序进行分包,和原生微信小程序进行分包的操作基本上没区别,主要就是在pages.json中进行配置。 如图,我新增了一个包diver-page 此时需要在pages.json中的subPackages数组中新增一项 root代表这个包的根…...

win10下安装PLSQL14连接Oracle数据库
问题背景 在使用Oracle开发过程中,经常会使用工具来连接数据库,方便查询、处理数据。其中有很多工具可以使用,比如dbeaver、plsql等。本文主要介绍在win10环境下,plsql14的安装步骤以及安装过程中遇到的一些问题。 安装步骤及问题…...

高考失利咨询复读,银河补习班客服开挂回复
补习班的客服在高考成绩出来后,需要用专业的知识和足够的耐心来回复各种咨询,聊天宝快捷回复软件,帮助客服开挂回复。 前言 高考成绩出来,几家欢喜几家愁,对于高考失利的学生和家长,找一个靠谱的复读补…...

java 代码块
Java中的代码块主要有三种类型:普通代码块、静态代码块、构造代码块。它们的用途和执行时机各不相同。 普通代码块:在方法内部定义,使用一对大括号{}包围的代码片段。它的作用域限定在大括号内,每当程序执行到该代码块时就会执行其…...
vue中避免多次请求字典接口
vuex缓存所有字典项 背景vuex管理所有字典项调用字典接口处理字典项数据的filter页面中使用字典 背景 每次用到字典都需要通过对应的字典type调用一次字典接口,当一个页面用到字典项很多时,接口请求炒鸡多,会导致接口响应超时。 本篇文章改为…...

Snappy使用
Snappy使用 Snappy是谷歌开源的压缩和解压的开发包,目标在于实现高速的压缩而不是最大的压缩 项目地址:GitHub - google/snappy:快速压缩器/解压缩器 Cmake版本升级 该项目需要比较新的cmake,CMake 3.16.3 or higher is requi…...
跨越重洋:在Heroku上配置Pip镜像源的终极指南
🌐 跨越重洋:在Heroku上配置Pip镜像源的终极指南 Heroku是一个支持多种编程语言的云平台即服务(PaaS),它允许开发者部署和管理应用程序。然而,由于Heroku的服务器位于海外,直接使用Python的包管…...

SpringBoot + 虚拟线程,性能炸裂!
一、什么是虚拟线程 虚拟线程是Java19开始增加的一个特性,和Golang的携程类似,一个其它语言早就提供的、且如此实用且好用的功能,作为一个Java开发者,早就已经望眼欲穿了。 二、虚拟线程和普通线程的区别 “虚拟”线程…...

Java Character类
Character是char的包装类 转义序列 Character类的方法...
Python中的爬虫实战:猫眼电影爬虫
随着互联网技术的快速发展,网络上的信息量越来越庞大。猫眼电影作为国内领先的电影数据平台,为用户提供了全面的电影信息服务。本文将介绍如何利用python编写简单的猫眼电影爬虫,获取电影相关数据。 爬虫概述 爬虫,即网络爬虫&a…...

WAIC2024 | 华院计算邀您共赴2024年世界人工智能大会,见证未来科技革新
在智能时代的浪潮汹涌澎湃之际,算法已成为推动社会进步的核心力量。作为中国认知智能技术的领军企业,华院计算在人工智能的广阔天地中,不断探索、创新,致力于将算法的潜力发挥到极致。在过去的时日里,华院计算不断探索…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...