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

Java基础知识点

58116a738589485eaf3f19517ae95871.jpgJava是一种高级计算机语言,是可以编写跨平台应用软件、完全面向对象的程序设计语言。

 

 

2、Java划分为三个技术平台:Java SE、Java EE、Java ME

 

Java SE是桌面应用,Java EE是web应用,平台企业版,Java ME是手机应用,平台微型版

 

3、Java语言的特点:简单易用、安全可靠、跨平台(通过Java虚拟机实现)、面向对象、支持多线程、自动进行垃圾回收(c语言没有)。

 

Java引入了虚拟机的概念,通过虚拟机(JVM)可以在不同的操作系统上运行Java程序,从而实现跨平台特性。

 

请添加图片描述

 

4、所有的可执行文件都在bin文件夹下

 

5、bin目录:该目录用于存放一些可执行程序,如javac.exe(Java编译器)、java.exe(Java运行工具)、jar.exe(打包工具)和 javadoc.exe(文档生成工具)

 

javac.exe是Java编译器工具,它可以将编写好的Java文件编译成Java字节码文件(可执行的Java程序)。就是将.java文件编译成.class文件。

 

java.exe是Java运行工具,它会启动一个Java虚拟机(JVM)进程,专门负责运行由Java编译器生成的字节码文件(.class文件)

 

6、db目录:db目录是一个小型数据库

 

7、include目录:在启动时引入一些C语言的头文件。

 

8、jre目录:此目录时Java运行时环境的根目录,它包含Java虚拟机、运行时的类包、Java应用启动器以及一个bin目录,但不包含开发环境中的开发工具。

 

jre只负责编写,不负责编译(只有java没有javac)

 

9、lib目录:为Java类库或库文件,是开发工使用的归档包文件

 

10、src文件夹:放置JDK核心类的源代码。

 

1、PATH配置bin文件夹的目录

 

2、PATH环境变量用于存储Java的编译和运行工具所在的路径。

 

请添加图片描述

 

3、因为Hello World.class字节码文件不是二进制的,不能直接执行,所以需要进行解析。

 

4、解析器使用“java HelloWorld”命令启动Java虚拟机运行程序,Java虚拟机首先将编译好的字节码问价加载到内存,这个过程称为类加载。

 

5、Java通过虚拟机,一次编译,到处运行。

 

6、Java程序通过Java虚拟机可以实现跨平台特性,但是Java虚拟机并不是跨平台的。

 

7、一个Java文件编译后一定生产一个class文件(❌)

 

一个Java文件可以有很多类,一个类对应一个class文件,有几个类就编译生成几个class文件。

 

8、一个文件中只能有一个公共类(public 修饰的类)

 

9、一个Java文件中可以没有公共类,但是一旦有了公共类,那么公共类的名字一定要和文件名保持一致。

 

1、Java的三大体系是:Java EE、Java SE、Java ME

2、Java程序的运行环境简称:JRE

3、编译Java程序需要使用 javac 命令

4、javac.exe和java.exe两个可执行程序存放在JDK安装的目录下的 bin 目录下。

5、Path环境变量用来存储Java的编译和运行工具所在的路径,而classpath环境变量则用来保存Java虚拟机要运行的“,class”文件路径。

6、Java.util包含Java中大量工具类、集合类,例如:Arrays、List、Set等。

7、JDK工具包括:Java编译器、Java运行工具、Java文档生成工具、Java打包工具。

8、.class文件可以在Java虚拟机中运行。

9、java.exe命令的作用是Java解释器

 

1、标识符:经常需要在程序中定义一些符号来标记一些名称,如包名、类名、方法名、参数名、变量名等,这些符号被称之为标识符。

 

标识符可以由任意顺序的大小写字母、数字、下画线(_)和美元符号( $ )组成,但是标识符不能以数字开头,也不能是Java中的关键字,也不能和JDK中的类同名。否则会在编译的时候出错

 

2、Java中的命名约定:

1⃣️:包名所有的字母一律小写。

2⃣️:类名和接口名每个单词的首字母都要大写,例如:ArrayList。

3⃣️:常量名的所有字母都大写,单词之间用下画线连接,例:DAY_OF_MONTH。

4⃣️:变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写(驼峰命名法),例:lineNumber

5⃣️:尽量使用有意义英文单词来定义标识符。

 

类型名 占用空间 取值范围

byte 8位(1个字节) -27~27-1

short 16位(2个字节) -215~215-1

int 32位(4个字节) -231~231-1

long 64位(8个字节) -264~264-1

float 32位(4个字节) 1.4E-45~3.4E+38,-1.4E-45~-3.4E+38

double 64位(8个字节) 4.9E-324~1.7E+308, -4.9E-324~-1.7E+308

char 每个字符变量占用2个字节  

Unicode 每个Unicode码占用16个字节  

3、为一个float类型的变量赋值的时候,所赋值的后面一定要加上F或者f

而在为一个double类型的变量赋值的时候,可以在后面加上D或者d,当然这个double类型的后面可以不加D或者d。

 

4、Java的字符类型采用的是Unicode编码方案,每个Unicode码占用16个字节。

 

5、对于char类型的赋值时需要使用一对单引号括起来,而且单引号中必须有且只能有一个字符。

 

6、Java中不能使用1、0表示真假,只能用true、false表示真假,而c语言用非0表示真,用0表示假,C语言中没有true、false。

 

请添加图片描述

 

范围小的能够自动转换为范围大的。

 

7、如果对表达式加强制类型转换,那么表达式一定加括号

例:(类型)(表达式)

 

8、理解几个转换:

 

public class testA {

 public static void main(String[] args) {

  System.out.println(2+3+'a'); //自动转换成int类型了

  System.out.println(2+3+"a"); //自动转换成String类型的了

  System.out.println("a"+2+3); //自动转换成String类型的了

 }

}

请添加图片描述

 

9、常量分为数值常量、符号常量:100,‘a’ ,true

 

10、整型常量:

1⃣️:二进制:由数字0和1组成,使用二进制面值来表示整数的时候,二进制数前面要以0b或0B开头,目的是为了和十进制进行区分,例:0b01101100

 

System.out.println(0b01101100);

请添加图片描述

 

2⃣️:八进制:以0开头,并且其后由0~7(包括0和7)的整数组成的数字序列,如:0324

 

System.out.println(0324);

请添加图片描述

 

System.out.println(010);

请添加图片描述

 

3⃣️:十进制:由数字0~9(包括0和9)的整数组成的数字序列,如198.

 

4⃣️:十六进制:以0x或者0X开头,并且后面跟随着0~9、A~F组成的字符序列,如0x25AF

 

System.out.println(0x25AF);

请添加图片描述

 

System.out.println(0x10);

请添加图片描述

 

1、java常量需要声明定义常量类型、常量名,并且可以对该常量进行初始化赋值,也可以后续赋值,但是Java常量一旦赋值后,值就不允许更改。

 

请添加图片描述

 

2、注意%的使用

 

public class testA {

 public static void main(String[] args) {

  System.out.println(-20%3);

  System.out.println(20%-3);

 }

}

请添加图片描述

 

3、位运算符的使用

 

& 按位与 只有当&左右的两个数相同的时候才会返回值1

 

public class testA {

 public static void main(String[] args) {

  System.out.println(0&0);

  System.out.println(0&1);

  System.out.println(1&0);

  System.out.println(1&1);

 }

}

请添加图片描述

 

| 按位或 只有当 | 左右都取0的时候才会返回值0

 

public class testA {

 public static void main(String[] args) {

  System.out.println(0|0);

  System.out.println(0|1);

  System.out.println(1|0);

  System.out.println(1|1);

 }

}

请添加图片描述

 

~ 取反

 

例:

7 :二进制 00000111

~7: 二进制 11111000

我们看到最高位是1,这表示这个~7得到的是一个负数,负数以补码的形式存储的。是个负数还是比较麻烦的。

先进行减1 : 11110111

再取反:00001000

得到的这个二进制数的值是8

但因为我们一开始知道~7是一个负数,所以我们要对8加上一个负号,即最终结果为:-8

 

自己求~-7的值,反正我不知道该怎么办了。

 

^ 按位异或

只有当^左右的两个数不相同的时候,才会输出值1

 

public class testA {

 public static void main(String[] args) {

   System.out.println(0^0);

   System.out.println(0^1);

   System.out.println(1^0);

   System.out.println(1^1);

 }

}

<< 逻辑左移,<<就是将操作数所有二进制位向左移动制定的位数。运算时,左边移走的部分舍去,右边的空位补0.

 

>>逻辑右移,就是将操作数所有的二进制位向右移动制定的位数。运算时,左边的空位根据原数的符号位补0或1(原本是负数就全部补1,原本是整数就全部补0),右边移走的部分舍去。

 

>>>无符号右移,就是将所有操作数所有二进制位不考虑正负向右移动指定尾数。运算时,左边的空位全部补0,右边移走的部分舍去。

 

对于switch语句,支持字符型,整型,字符串,不支持小数(float、double),也不支持布尔型。

 

方法的三要素: 方法名、参数、返回值的类型

对于return回去什么类型的值,返回值的类型就是什么。

 

System.in.read();

用于读取一个字符,返回的是一个整数值,可以通过强制转换转换为字符型,对于输入的是单个字符的时候可以用这种方法。

 

如果输入的字符很多的时候或者是一个字符串的时候使用:

Scanner sc =new Scanner(System.in);

 

数据类型 默认初始化值

byte、short、int、long 0

float、double 0.0

char 一个空字符,即’\u0000’

boolean false

引用数据类型(String) null,表示变量不引用任何对象

数组的常用操作:插入、删除、修改、查找、排序、初始化

 

遍历数组可以使用通过下标使用for循环进行遍历

也可以shying增强for循环来遍历数组

 

public class testA {

 public static void main(String[] args) {

   int a[] = {1,2,3,4,5,6,7};

   for(int i : a) {

    

相关文章:

Java基础知识点

Java是一种高级计算机语言&#xff0c;是可以编写跨平台应用软件、完全面向对象的程序设计语言。 2、Java划分为三个技术平台&#xff1a;Java SE、Java EE、Java ME Java SE是桌面应用&#xff0c;Java EE是web应用&#xff0c;平台企业版&#xff0c;Java ME是手机应用&#…...

攻防世界-web-fileclude

1. 题目描述 打开链接&#xff0c;可以看到如下代码&#xff1a; 代码意思很简单&#xff0c;让我们传递两个参数&#xff0c;一个file1&#xff0c;一个file2&#xff0c;如果file2的内容为hello ctf&#xff0c;那么就可以在代码中include file1 2. 思路分析 这道题显然是…...

【100天精通python】Day36:GUI界面编程_高级功能操作和示例

专栏导读 专栏订阅地址&#xff1a;https://blog.csdn.net/qq_35831906/category_12375510.html 一、GUI 高级功能 1 自定义主题和样式 自定义主题和样式可以让你的GUI应用程序在外观方面更加出色。在使用Tkinter时&#xff0c;你可以使用ttkthemes库来应用不同的主题和样式。…...

无涯教程-Perl - sub函数

描述 此函数定义一个新的子例程。上面显示的参数遵循以下规则- NAME是子例程的名称。可以在有或没有原型规范的情况下预先声明命名的子例程(没有关联的代码块)。 匿名子例程必须具有定义。 PROTO定义了函数的原型,调用该函数以验证提供的参数时将使用该原型。 ATTRS为解析…...

wpf控件上移下移,调整子集控件显示顺序

页面代码: <!-- 导出A2,自定义导出设置列,添加时间:2023-8-9 14:14:18,作者:whl; --><Window x:Class="WpfSnqkGasAnalysis.WindowGasExportA2"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http:/…...

cesium学习记录08-鼠标绘制多边形

上一篇学习了实体的一些基础知识&#xff0c;这一篇来学习鼠标绘制实体多边形的实现 一、方法一&#xff1a; 1&#xff0c;结果显示 贴地&#xff1a; 不贴地&#xff1a; 2&#xff0c;方法全部代码&#xff1a; 主方法&#xff1a; /*** 绘制多边形* param {Object} op…...

rocketMq启动broker报错找不到或无法加载主类 Files\Java\jdk1.8.0_171\lib\dt.jar;C:\Program]

假如弹出提示框提示‘错误: 找不到或无法加载主类 xxxxxx’。 1.打开runbroker.cmd 将"%CLASSPATH%"加上英文双引号&#xff0c;切勿别加中文双引号 2.打开runserver.cmd 同理 将"%CLASSPATH%"加上英文双引号&#xff0c;切勿别加中文双引号 3.正常执行即…...

Linux touch 命令指南大全

1. 概述 在本教程中,我们将学习touch命令。简而言之,这个命令允许我们更新文件或目录的最后修改时间和最后访问时间。 因此,我们将重点关注如何使用该命令及其各种选项。 请注意,我们使用 Bash 测试了此处显示的所有命令;但是,它们应该与任何兼容 POSIX 的 shell 一起使…...

华为网络篇 RIPv2的基础配置-25

难度 1复杂度1 目录 一、实验原理 1.1 RIP的版本 1.2 RIP的路由更新方式 1.3 RIP的计时器 1.4 RIP的防环机制 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;&am…...

fastadmin 下拉多级分类

要实现下图效果 一、先创建数据表 二、在目标的controll中引入use fast\Tree; public function _initialize() {parent::_initialize();$this->model new \app\admin\model\zxdc\Categorys;$tree Tree::instance();$tree->init(collection($this->model->order(…...

时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 MATLAB实现基…...

RabbitMQ工作流程详解

1 生产者发送消息的流程 (1)生产者连接RabbitMQ&#xff0c;建立TCP连接(Connection)&#xff0c;开启信道(Channel) (2)生产者声明一个Exchange (交换器)&#xff0c;并设置相关属性&#xff0c;比如交换器类型、是否持久化等 (3)生产者声明一个队列井设置相关属性&#xf…...

LabVIEW使用图像处理进行交通控制性能分析

LabVIEW使用图像处理进行交通控制性能分析 采用普雷维特、拉普拉斯、索贝尔和任意的空间域方法对存储的图像进行边缘检测&#xff0c;并获取实时图像。然而&#xff0c;对四种不同空间域边缘检测方法的核的性能分析。 以前&#xff0c;空路图像存储在数据库中&#xff0c;道路…...

CentOS 7 下 Keepalived + Nginx 实现双机高可用

CentOS 7 下 Keepalived Nginx 实现双机高可用 文章目录 CentOS 7 下 Keepalived Nginx 实现双机高可用服务器准备服务信息服务架构 服务安装nginxKeepalived 服务配置nginxKeepalived 启动服务nginxkeepalived 服务验证查看 VIP 状态CURL 命令访问浏览器访问 高可用验证停止…...

【Linux】IO多路转接——select接口

目录 I/O多路转接之select select初识 select函数 socket就绪条件 select基本工作流程 select服务器 select的优点 select的缺点 select的适用场景 I/O多路转接之select select初识 select是系统提供的一个多路转接接口。 select系统调用可以让我们的程序同时监视多…...

error_Network Error

此页面为订单列表&#xff0c;是混合开发(页面嵌入在客户端中) 此页面为订单列表&#xff0c;此需求在开发时后端先将代码发布在测试环境&#xff0c;我在本地调试时调用的后端接口进行联调没有任何问题。 此后我将代码发布在测试环境&#xff0c;在app中打开页面&#xff0c…...

Python爱心光波

文章目录 前言Turtle入门简单案例入门函数 爱心光波程序设计程序分析 尾声 前言 七夕要来啦&#xff0c;博主在闲暇之余创作了一个爱心光波&#xff0c;感兴趣的小伙伴们快来看看吧&#xff01; Turtle入门 Turtle 是一个简单而直观的绘图工具&#xff0c;它可以帮助你通过简…...

【分布式】Viewstamped Replication Revisited

篇前感悟&#xff1a; 阅读分布式系统文章的意义其实并不在于你个人真正地去开发这样一个基于这种协议的系统&#xff0c;因为真正去开发一个高可用的分布式系统实在是太难了&#xff08;对我来说…&#xff09;更多的还是汲取其中的思想&#xff0c;包括设计思路&#xff0c;优…...

微服务07-分布式缓存

前提: 单机的Redis存在四大问题: 解决办法:基于Redis集群解决单机Redis存在的问题 1、Redis持久化 Redis 具有持久化功能,其会按照设置以 快照 或 操作日志 的形式将数据持久化到磁盘。 Redis有两种持久化方案: RDB持久化AOF持久化注意: RDB 是默认持久化方式,但 Red…...

QGraphicsView放大时,paint有时不被调用,导致图像绘制不出来(2)

此前&#xff08;1&#xff09;解决的是在QGraphicsItem::boundingRect不变的情况下造成不绘制。这次解决的是QGraphicsItem::boundingRect随时都发生变化导致的不绘制。 这问题是我在不继承QGraphicsLineItem&#xff08;调用setLine&#xff09;&#xff0c;而是继承QGraphic…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了&#xff0c;很多小伙伴想体验鸿蒙电脑版操作系统&#xff0c;可惜&#xff0c;鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机&#xff0c;来体验大家心心念念的鸿蒙系统啦&#xff01;注意&#xff1a;虚拟…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...