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

JAVA基础教程DAY0-基础知识

JAVA语言的特点
简单性、面向对象、安全性、跨平台性、支持多线程、分布性

面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它通过将数据和操作这些数据的方法封装在一起,以创建对象的形式来组织代码。面向对象编程的主要特点包括:

  1. 封装(Encapsulation):封装是将数据(属性)和操作这些数据的方法(行为)放在一个单元(对象)中。它通过限制对数据的直接访问,只允许通过特定的方法来操作数据,从而提高了代码的安全性和可维护性。

  2. 继承(Inheritance):继承允许一个类(子类)从另一个类(父类)继承属性和方法。通过继承,子类可以重用父类的代码,同时可以扩展或修改父类的行为。这种特性提高了代码的可重用性和扩展性。

  3. 多态(Polymorphism):多态性指的是同一个方法在不同对象上可以表现出不同的行为。通过方法重载(同一方法名,不同参数)和方法重写(子类覆盖父类方法),多态性使得代码更加灵活和动态。

JAVA程序的运行流程

  • 编写代码

    • 开发者使用文本编辑器编写 Java 源代码,并将其保存为 .java 文件。源代码包含一个或多个类的定义。
  • 编译代码

    • 使用 javac 命令编译 .java 文件,将 Java 源代码编译成字节码(Bytecode),并生成 .class 文件。字节码是一种与平台无关的中间表示形式,Java 虚拟机 (JVM) 能够理解和执行它。class是二进制文件
  • 类加载(Class Loading)

    • Java 类加载器(ClassLoader)负责在运行时动态加载类。类加载器查找并加载 .class 文件到 JVM 中。
  • 字节码验证(Bytecode Verification)

    • 在类加载之后,JVM 运行一个验证器来检查字节码是否符合 Java 语言规范,确保字节码不会破坏 JVM 的安全性和稳定性。验证步骤可以防止恶意代码的注入和执行。
  • 准备(Preparation)

    • JVM 为类的静态变量分配内存,并将其初始化为默认值。这一步不执行任何程序代码,只是为静态字段分配空间。
  • 解析(Resolution)

    • JVM 将符号引用(Symbolic References)转换为直接引用(Direct References)。符号引用是类文件中的符号表示(如类名、方法名等),而直接引用是内存地址。解析步骤确保类的正确链接。
  • 初始化(Initialization)

    • JVM 执行类的初始化代码(如静态初始化块和静态变量的初始化)。这一步将静态变量设置为实际的初始值,并执行任何静态块中的代码。
  • 执行(Execution)

    • JVM 调用类的 main 方法开始程序的执行。main 方法是程序的入口点,程序的所有逻辑从这里开始运行。

基本数据类型

Java 有八种基本数据类型:

  1. 整数类型(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
  2. 浮点类型(Floating-Point Types)

    • float
      • 大小:32 位
      • 范围:大约 ±3.40282347E+38F(6-7 位有效数字)
      • 默认值:0.0f
    • double
      • 大小:64 位
      • 范围:大约 ±1.79769313486231570E+308(15 位有效数字)
      • 默认值:0.0d
  3. 字符类型(Character Type)

    • char
      • 大小:16 位
      • 范围:0 到 65,535(Unicode 字符)
      • 默认值:'\u0000'
  4. 布尔类型(Boolean Type)

    • boolean
      • 大小:不确定(依赖于 JVM 实现)
      • 值:truefalse
      • 默认值:false

引用数据类型

引用数据类型指向一个对象,它们是通过类、接口或数组来定义的:

  1. 类(Class)

    • 类是创建对象的模板。每个对象都是一个类的实例。例如:

      String str = "Hello, World!";
      str 是一个引用数据类型,指向一个 String 对象。

  2. 接口(Interface)

    • 接口是抽象类型,指定类必须实现的方法。引用数据类型可以是接口类型的对象。例如:

      List<String> list = new ArrayList<>();
      list 是一个引用数据类型,指向一个实现了 List 接口的 ArrayList 对象。

  3. 数组(Array)

    • 数组是一个包含相同类型元素的容器。数组类型也是引用类型。例如:

      int[] numbers = {1, 2, 3, 4, 5};
      numbers
      是一个引用数据类型,指向一个包含整数的数组对象。

JAVA常见数据类型

访问控制关键字

  1. private

    • 访问控制级别:类内部
    • 用于声明类的成员(变量或方法)只能在该类内部访问。
  2. protected

    • 访问控制级别:同一包内的类和子类
    • 用于声明类的成员(变量或方法)可以在同一包内的类和子类中访问。
  3. public

    • 访问控制级别:所有类
    • 用于声明类、方法或变量可以被所有类访问。
  4. default

    • 访问控制级别:同一包内的类
    • 用于声明包级别的访问权限。如果未显式指定访问控制关键字,则默认是包级别访问权限。

类、方法和变量修饰符

  1. abstract

    • 用于声明抽象类或方法,抽象类不能被实例化,抽象方法必须在子类中实现。
  2. class

    • 用于定义一个类。
  3. extends

    • 用于声明一个类是另一个类的子类。
  4. final

    • 用于声明不可变的类、方法或变量,最终类不能被继承,最终方法不能被重写,最终变量不能被重新赋值。
  5. implements

    • 用于声明一个类实现一个或多个接口。
  6. interface

    • 用于定义一个接口。
  7. static

    • 用于声明类的静态成员,静态成员属于类本身,而不是类的实例。

控制语句

  1. break

    • 用于终止循环或 switch 语句。
  2. case

    • 用于 switch 语句中,表示一个分支。
  3. continue

    • 用于跳过循环中的当前迭代,并开始下一个迭代。
  4. default

    • 用于 switch 语句中,表示没有匹配时的默认分支。
  5. do

    • 用于定义 do-while 循环。
  6. else

    • 用于 if 语句,表示条件为 false 时的执行块。
  7. for

    • 用于定义 for 循环。
  8. if

    • 用于定义条件语句。
  9. return

    • 用于从方法返回值。
  10. switch

    • 用于定义多分支条件语句。
  11. while

    • 用于定义 while 循环。

异常处理

  1. catch

    • 用于捕获异常。
  2. finally

    • 用于定义在 try 语句块执行后总是执行的代码块。
  3. throw

    • 用于抛出一个异常。
  4. throws

    • 用于声明一个方法可能抛出的异常。
  5. try

    • 用于定义一个可能抛出异常的代码块。

其他

  1. super

    • 用于引用父类的成员(变量或方法)。
  2. this

    • 用于引用当前实例的成员(变量或方法)。
  3. void

    • 用于声明方法无返回值。
  4. package

    • 用于声明类所属的包。
  5. import

    • 用于导入其他包或类。
  6. new

    • 用于创建新实例。
  7. null

    • 表示空引用。

 运算符分成以下几组

  • 算术运算符
  • 关系运算符
  • 位运算符
  • 逻辑运算符
  • 赋值运算符
  • 其他运算符

相关文章:

JAVA基础教程DAY0-基础知识

JAVA语言的特点 简单性、面向对象、安全性、跨平台性、支持多线程、分布性 面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种编程范式&#xff0c;它通过将数据和操作这些数据的方法封装在一起&#xff0c;以创建对象的形式来组织代…...

鸿蒙开发Ability Kit(程序访问控制):【安全控件概述】

安全控件概述 安全控件是系统提供的一组系统实现的ArkUI组件&#xff0c;应用集成这类组件就可以实现在用户点击后自动授权&#xff0c;而无需弹窗授权。它们可以作为一种“特殊的按钮”融入应用页面&#xff0c;实现用户点击即许可的设计思路。 相较于动态申请权限的方式&am…...

【信息系统项目管理师】18年~23年案例概念型知识

文章目录 18上18下19上19下20上20下21上21下22年上22年下23年上 18上 请简述 ISO 9000 质量管理的原则 领导作用、 过程方法、 管理的系统方法、 与供方互利的关系、 基于事实的决策方法、 持续改进、 全员参与、 以顾客为关注焦点 概念 国家标准(GB/T 1 9000 2008)对质量的定…...

什么是字符串常量池?如何利用它来节省内存?

字符串常量池是Java中一个非常重要的概念&#xff0c;尤其对于理解内存管理和性能优化至关重要。想象一下&#xff0c;你正在管理一家大型图书馆&#xff0c;每天都有无数读者来借阅书籍。 如果每本书每次借阅都需要重新印刷一本&#xff0c;那么图书馆很快就会陷入混乱&#…...

Selenium自动化测试20条常见异常+处理方案

常见的Selenium异常 以下是所有Selenium WebDriver代码中可能发生的一些常见Selenium异常。 1、ElementClickInterceptedException 由于以某种方式隐藏了接收到click命令的元素&#xff0c;因此无法正确执行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 注意&#xff0c;信号的两部分都要用{}花括号括起来 s_axis_data_tdata {{32{1b1}},{32b0100_0000_0000_0000_0000_0000_0000_0000}}; 3…...

OpenSSH远程代码执行漏洞 (CVE-2024-6387)

1. 前言 OpenSSH是一套基于安全外壳&#xff08;SSH&#xff09;协议的安全网络实用程序&#xff0c;它提供强大的加密功能以确保隐私和安全的文件传输&#xff0c;使其成为远程服务器管理和安全数据通信的必备工具。 OpenSSH 自 1995 年问世近 20 年来&#xff0c;首次出现了…...

高薪程序员必修课-java并发编程的bug源头

前言 Java并发编程虽然强大&#xff0c;但也容易引发复杂的bug。并发编程的bug主要源自以下几个方面&#xff1a;竞态条件、死锁、内存可见性问题和线程饥饿。了解这些bug的源头及其原理&#xff0c;可以帮助开发者避免和解决这些问题。以下是详细的讲解和相应的示例。 1. 竞态…...

c++:#include 某文件.h底层如何寻找其.cpp实现

在C中&#xff0c;当你编写了一个头文件&#xff08;如MyLibrary.h&#xff09;和对应的实现文件&#xff08;如MyLibrary.cpp&#xff09;时&#xff0c;其他源文件&#xff08;如main.cpp&#xff09;只需要包含头文件&#xff08;#include "MyLibrary.h"&#xff…...

uniapp中如何进行微信小程序的分包

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

win10下安装PLSQL14连接Oracle数据库

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

高考失利咨询复读,银河补习班客服开挂回复

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

java 代码块

Java中的代码块主要有三种类型&#xff1a;普通代码块、静态代码块、构造代码块。它们的用途和执行时机各不相同。 普通代码块&#xff1a;在方法内部定义&#xff0c;使用一对大括号{}包围的代码片段。它的作用域限定在大括号内&#xff0c;每当程序执行到该代码块时就会执行其…...

vue中避免多次请求字典接口

vuex缓存所有字典项 背景vuex管理所有字典项调用字典接口处理字典项数据的filter页面中使用字典 背景 每次用到字典都需要通过对应的字典type调用一次字典接口&#xff0c;当一个页面用到字典项很多时&#xff0c;接口请求炒鸡多&#xff0c;会导致接口响应超时。 本篇文章改为…...

Snappy使用

Snappy使用 Snappy是谷歌开源的压缩和解压的开发包&#xff0c;目标在于实现高速的压缩而不是最大的压缩 项目地址&#xff1a;GitHub - google/snappy&#xff1a;快速压缩器/解压缩器 Cmake版本升级 该项目需要比较新的cmake&#xff0c;CMake 3.16.3 or higher is requi…...

跨越重洋:在Heroku上配置Pip镜像源的终极指南

&#x1f310; 跨越重洋&#xff1a;在Heroku上配置Pip镜像源的终极指南 Heroku是一个支持多种编程语言的云平台即服务&#xff08;PaaS&#xff09;&#xff0c;它允许开发者部署和管理应用程序。然而&#xff0c;由于Heroku的服务器位于海外&#xff0c;直接使用Python的包管…...

SpringBoot + 虚拟线程,性能炸裂!

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

Java Character类

Character是char的包装类 转义序列 Character类的方法...

Python中的爬虫实战:猫眼电影爬虫

随着互联网技术的快速发展&#xff0c;网络上的信息量越来越庞大。猫眼电影作为国内领先的电影数据平台&#xff0c;为用户提供了全面的电影信息服务。本文将介绍如何利用python编写简单的猫眼电影爬虫&#xff0c;获取电影相关数据。 爬虫概述 爬虫&#xff0c;即网络爬虫&a…...

WAIC2024 | 华院计算邀您共赴2024年世界人工智能大会,见证未来科技革新

在智能时代的浪潮汹涌澎湃之际&#xff0c;算法已成为推动社会进步的核心力量。作为中国认知智能技术的领军企业&#xff0c;华院计算在人工智能的广阔天地中&#xff0c;不断探索、创新&#xff0c;致力于将算法的潜力发挥到极致。在过去的时日里&#xff0c;华院计算不断探索…...

Stable Diffusion v1.5保姆级教程:输入英文描述,轻松生成专属AI画作

Stable Diffusion v1.5保姆级教程&#xff1a;输入英文描述&#xff0c;轻松生成专属AI画作 想体验AI绘画的魅力&#xff0c;却担心操作复杂、门槛太高&#xff1f;别担心&#xff0c;今天这篇教程就是为你准备的。我们将手把手教你使用 Stable Diffusion v1.5 这个经典的AI绘…...

别再被英文界面劝退!手把手教你用AVL Cruise 2019搭建第一个纯电动车仿真模型

从零征服AVL Cruise&#xff1a;纯电动车仿真建模实战指南 第一次打开AVL Cruise 2019时&#xff0c;满屏的专业术语和复杂界面确实容易让人望而生畏。但别担心&#xff0c;这就像第一次接触乐高积木——看似复杂的模型&#xff0c;其实都是由基础模块按特定规则组合而成。本文…...

启动 SAP Fiori Launchpad Designer:把 URL、scope、client 与排障思路一次讲透

在 SAP Fiori 项目里,很多团队花了不少时间做完前置配置,却在真正打开 Launchpad Designer 的那一刻卡住了:地址到底怎么拼?CONF 和 CUST 应该怎么选?为什么同一套内容在不同 client 里表现不一样?如果页面迟迟加载不出来,问题究竟出在 SAPUI5、ICF、OData,还是权限本身…...

Qwen3.5-4B模型Proteus电路仿真辅助:原理图分析与代码生成

Qwen3.5-4B模型Proteus电路仿真辅助&#xff1a;原理图分析与代码生成 1. 电子设计学习的新帮手 电子电路设计学习过程中&#xff0c;很多初学者都会遇到这样的困境&#xff1a;面对Proteus中的复杂原理图&#xff0c;既看不懂电路功能&#xff0c;也不知道如何为微控制器编写…...

Phi-3-vision-128k-instruct黑马点评项目AI升级:实现菜品图片智能识别与推荐

Phi-3-vision-128k-instruct黑马点评项目AI升级&#xff1a;实现菜品图片智能识别与推荐 1. 引言&#xff1a;餐饮应用的智能化痛点 在餐饮行业数字化浪潮中&#xff0c;"黑马点评"作为一款广受欢迎的美食点评应用&#xff0c;面临着用户需求升级的挑战。传统模式下…...

OpenClaw+Qwen3.5-4B-Claude:3个提升开发效率的自动化技巧

OpenClawQwen3.5-4B-Claude&#xff1a;3个提升开发效率的自动化技巧 1. 为什么开发者需要OpenClaw&#xff1f; 作为一名长期奋战在代码一线的开发者&#xff0c;我一直在寻找能够真正减轻重复劳动的工具。直到遇到OpenClaw与Qwen3.5-4B-Claude的组合&#xff0c;才发现原来…...

FireRedASR-AED-L赋能在线教育:实时语音转写与错误检测实践

FireRedASR-AED-L赋能在线教育&#xff1a;实时语音转写与错误检测实践 在线教育的课堂里&#xff0c;老师正对着屏幕滔滔不绝。突然&#xff0c;一个关键的知识点口误了——“光合作用的原料是二氧化碳和水&#xff0c;产物是氧气和...呃...葡萄糖&#xff1f;” 屏幕另一端的…...

Tomcat 9.x 静态资源与SpringBoot应用跨域配置冲突?一个配置注释引发的‘血案’与解决方案

Tomcat 9.x静态资源与SpringBoot跨域配置的深度排错指南 当你在Tomcat中同时部署静态前端资源和SpringBoot应用时&#xff0c;是否遇到过这样的困境&#xff1a;明明按照官方文档配置了CORS过滤器&#xff0c;浏览器却依然抛出跨域错误&#xff1f;这个看似简单的配置背后&…...

Xilinx 7Series与UltraScale FPGA在线升级:STARTUPE2与STARTUPE3原理解析与实战配置

1. FPGA在线升级的核心挑战与解决方案 当我们需要对部署在设备上的FPGA进行固件升级时&#xff0c;最头疼的问题就是如何在不拆机的情况下完成这个操作。想象一下&#xff0c;如果你的智能家居设备需要更新固件&#xff0c;每次都要拆开外壳用JTAG线连接&#xff0c;那简直是工…...

低代码拖拽逻辑执行慢10倍?:用3个内存布局优化+1个opcode精简表,让RuleEngine吞吐量突破23,000 TPS

第一章&#xff1a;低代码拖拽逻辑执行慢10倍&#xff1f;&#xff1a;用3个内存布局优化1个opcode精简表&#xff0c;让RuleEngine吞吐量突破23,000 TPS低代码规则引擎在拖拽式策略编排场景下&#xff0c;常因对象频繁分配、字段间接寻址与冗余指令解析导致执行路径膨胀。我们…...