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

    • 表示空引用。

 运算符分成以下几组

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/766820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python深度理解系列之【排序算法——冒泡排序】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️木道寻的主页 文章目录 &#x1f525;前言&#x1f680;冒泡排序python实现算法实现图形化算法展示 ⭐️⭐️⭐️总结 &#x1f525;前…

师傅们 ~ 2024HW一手资料

各位师傅们&#xff0c;2024HW来了&#xff01; 从2026年开始&#xff0c;随着我国对网络安全的重视&#xff0c;涉及单位不断增加&#xff0c;越来越多单位和个人都加入到HW当中。 2024HW就在眼前&#xff0c; 那么还有不了解或者还没投简历面试的朋友们&#xff0c;需要注意…

职升网:中级会计师考试难度是怎样的?

中级会计师考试确实被普遍认为是具有一定难度的考试。以下是我对其难度的分析&#xff1a; 一、知识体系的广泛性 中级会计师考试覆盖的内容十分广泛&#xff0c;包括但不限于财务管理、财务会计、成本会计、税法等。这就要求考生具备扎实的基础知识和广泛的知识面&#xff0…

咨询公司在推行TPM管理中有哪些不可替代的作用?

TPM管理作为一种先进的生产维护理念&#xff0c;正逐渐成为企业追求卓越生产性能的不二之选。在这场转型升级的浪潮中&#xff0c;咨询公司扮演着不可替代的角色&#xff0c;它们如何助力企业成功推行TPM管理&#xff0c;成为了我们今天要探讨的焦点。 一、专业引领&#xff0c…

在Ubuntu 22.04 LTS 上安装 MySQL两种方式:在线方式和离线方式

Ubuntu安装MySQL 介绍&#xff1a; Ubuntu 是一款基于Linux操作系统的免费开源发行版&#xff0c;广受欢迎。它以稳定性、安全性和用户友好性而闻名&#xff0c;适用于桌面和服务器环境。Ubuntu提供了大量的软件包和应用程序&#xff0c;拥有庞大的社区支持和活跃的开发者社区…

五、【源码】资源加载器

源码地址&#xff1a;https://github.com/spring-projects/spring-framework 仓库地址&#xff1a;https://gitcode.net/qq_42665745/spring/-/tree/05-resource-loader 资源加载器 流程&#xff1a; 1.初始化BeanFactory 2.创建XmlBeanDefinitionReader用于从 XML 文件中读…

LoadRunner初学篇

我也是初学&#xff0c;写一篇文章记录下过程及心得&#xff0c;有不同建议的大佬可评价&#xff0c;感谢提携 这是什么 LoadRunner&#xff0c;是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题&#xff0c;Loa…

焦化厂甲烷气体监测:甲烷传感器如何选择?

在焦化厂的日常运营中&#xff0c;煤的高温干馏和石油的渣油焦炭化是两大关键工艺。这些过程中&#xff0c;不仅产生了众多我们日常生活所需的化学产品&#xff0c;如糖精、焦油、沥青等&#xff0c;还伴随着大量焦炉煤气的生成。然而&#xff0c;这些煤气中含有的高浓度甲烷等…

坑——python的redis库的decode_responses设置

python的redis库查询返回的值默认是返回字节串&#xff0c;可以在redis.Redis()方法中通过设置decode_responses参数&#xff0c;让返回值直接是字符串&#xff1b; 查询返回字节串是因为Redis()方法中decode_responses默认值是False&#xff1a; 设置decode_responses为True就…

解决“Undefined control sequence. \hline”

解决“Undefined control sequence. \hline” Q:创建表格时显示错误“Undefined control sequence. \Xhline”A:解决方法C介绍\usepackage{makecell}作用使用方法示例其他功能总结 Q:创建表格时显示错误“Undefined control sequence. \Xhline” MTMAGVDPP.tex: 错误: 211: Un…

开源TTS模型支持中日韩并可以微调自己的声音模型;微软开源的知识图谱RAG;RAG和LLMs构建的搜索应用程序

✨ 1: Fish Speech Fish Speech 开源TTS模型支持中日韩&#xff0c;语音合成不止于自然 Fish Speech 是一个开源的语音生成项目&#xff0c;致力于开发和改进语音合成技术。项目最新稳定版本为1.1.2&#xff0c;并正在向1.2版本更新中。 Fish Speech 虽然仅为亿级参数的模型&…

huggingface datasets 数据集下载

pip install datasets但是国内下载一般由于网络下载失败&#xff1a;ConnectionError: Couldn’t reach ‘reach-vb/pokemon-blip-captions’ on the Hub (ConnectionError) 解决办法&#xff08;先vp*下载&#xff09;&#xff1a; 下载使用 from datasets import Dataset, …

Cube-Studio:开源大模型全链路一站式中台

开源项目&#xff0c;欢迎star哦&#xff0c;https://github.com/data-infra/cube-studio 一款真正意义的 LLMOps 框架 LLMOps&#xff08;Large Language Model Operations&#xff09;是一个涵盖了大型语言模型&#xff08;如GPT系列&#xff09;开发、部署、维护和优化的一…

海外报纸媒体投放形式分为哪些?传播当中有什么优势-大舍传媒

国外报纸媒体投放新闻稿作为一种传统而有效的传播方式&#xff0c;依然在现代媒体环境中保持着其独特的价值和权威性。以下几点阐述了报纸媒体宣发的几个关键方面&#xff0c;特别是当通过专业机构如大舍传媒进行操作时&#xff1a; 权威性和公信力&#xff1a;报纸作为历史悠久…

使用瀚高数据库开发管理工具进行数据的备份与恢复---国产瀚高数据库工作笔记008

使用瀚高数据库,备份 恢复数据 然后找到对应的目录 其实就是hgdbdeveloper,瀚高的数据库开发管理工具 对应的包中有个dbclient 这个目录,选中这个目录以后,就可以了,然后 在对应的数据库,比如 data_middle 中,选中 某个模式,比如bigdata_huiju 然后右键进行,点击 恢复,然…

pycharm的usages在哪设置?

参考文章&#xff1a;https://blog.51cto.com/save/8961821 在代码编辑器&#xff08;如PyCharm或IntelliJ IDEA&#xff09;中&#xff0c;"1 usage"通常表示当前光标所在的代码元素&#xff08;如变量、函数、类等&#xff09;在其他地方被使用了一次。这个功能可…

springboot java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver 应该如何解决

遇到的问题&#xff1a;项目中引用了外部的达梦jar包 在idea中正常使用 也能找到dm.jdbc.driver.DmDriver 驱动 但是当通过jenkins 构建部署到服务器上 总是报 ClassNotFoundException: dm.jdbc.driver.DmDriver 找不到驱动 应用到的驱动代码如下格式 排查步骤 1.首先看你的项…

怎么将视频字幕提取翻译?字幕提取的方法大全来了

谁说提取视频字幕非得大费周章&#xff1f;其实用专业软件也能轻松搞定字幕转换&#xff0c;让你告别传统繁琐的转文字工作&#xff01; 想象一下&#xff0c;简单的几个步骤&#xff0c;你的视频就能从屏幕上的文字转化为可编辑的文档。是不是已经迫不及待想要尝试了&#xf…

基于SpringBoot的漫画网站系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;B/S架构模式、Java技术 工具&#xff1a;Visual Studio、MySQL数据库开发工具 系统展示 首页 用户…

Nginx主配置文件---Nginx.conf

nginx主配置文件的模块介绍 全局块&#xff1a; 全局块是配置文件从开始到 events 块之间的部分&#xff0c;其中指令的作用域是 Nginx 服务器全局。主要指令包括&#xff1a; user&#xff1a;指定可以运行 Nginx 服务的用户和用户组&#xff0c;只能在全局块配置。例如&…
最新文章