Java基础知识点
Java是一种高级计算机语言,是可以编写跨平台应用软件、完全面向对象的程序设计语言。
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是一种高级计算机语言,是可以编写跨平台应用软件、完全面向对象的程序设计语言。 2、Java划分为三个技术平台:Java SE、Java EE、Java ME Java SE是桌面应用,Java EE是web应用,平台企业版,Java ME是手机应用&#…...

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

【100天精通python】Day36:GUI界面编程_高级功能操作和示例
专栏导读 专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html 一、GUI 高级功能 1 自定义主题和样式 自定义主题和样式可以让你的GUI应用程序在外观方面更加出色。在使用Tkinter时,你可以使用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-鼠标绘制多边形
上一篇学习了实体的一些基础知识,这一篇来学习鼠标绘制实体多边形的实现 一、方法一: 1,结果显示 贴地: 不贴地: 2,方法全部代码: 主方法: /*** 绘制多边形* param {Object} op…...

rocketMq启动broker报错找不到或无法加载主类 Files\Java\jdk1.8.0_171\lib\dt.jar;C:\Program]
假如弹出提示框提示‘错误: 找不到或无法加载主类 xxxxxx’。 1.打开runbroker.cmd 将"%CLASSPATH%"加上英文双引号,切勿别加中文双引号 2.打开runserver.cmd 同理 将"%CLASSPATH%"加上英文双引号,切勿别加中文双引号 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(Routing Information Protocol,路由信息协议)&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,建立TCP连接(Connection),开启信道(Channel) (2)生产者声明一个Exchange (交换器),并设置相关属性,比如交换器类型、是否持久化等 (3)生产者声明一个队列井设置相关属性…...

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

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

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

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

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

QGraphicsView放大时,paint有时不被调用,导致图像绘制不出来(2)
此前(1)解决的是在QGraphicsItem::boundingRect不变的情况下造成不绘制。这次解决的是QGraphicsItem::boundingRect随时都发生变化导致的不绘制。 这问题是我在不继承QGraphicsLineItem(调用setLine),而是继承QGraphic…...

深入理解设计模式-创建型之建造者模式(与工厂区别)
什么是建造者设计模式?和工厂设计模式有什么区别 建造者设计模式(Builder Design Pattern)和工厂设计模式(Factory Design Pattern)都是面向对象设计中的创建型模式,但它们解决的问题和应用场景有所不同。…...

Centos7多台服务器免密登录
准备四台服务器: docker0 docker1 docker2 docker3 在docker0服务器上生成公钥和私钥 [rootwww ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory /root/.ssh. Enter passp…...

C语言实现哈希搜索算法
一、哈希搜索算法原理 哈希搜索,也叫散列查找,是一种通过哈希表(散列表)实现快速查找目标元素的算法。哈希搜索算法通常适用于需要快速查找一组数据中是否存在某个元素的场景,其时间复杂度最高为 O(1),而平…...

MySQL卸载并重装指定版本
MySQL卸载并重装制定版本 学习新的项目,发现之前的Navicat已经失去了与现有MySQL的链接,而且版本也不适合,为了少走弯路,准备直接重装相应版本的MySQL 卸载现有MySQL 停止windows的MySQL服务,【windowsR】打开运行框…...

文件IO编程 1 2
头文件包含路径 linux 操作系统分为两大空间:用户空间和内核空间 这样划分,是为了保护内核的核心组件,不被轻易访问和修改 系统调用:安全的访问内核空间 其核心是:函数API(API:用户编程接口&…...

Java后端框架模块整合
提示:使用Java后端开发框架能够提高开发效率、代码质量,提升可扩展性,降低开发成本和易于维护。 文章目录 前言MyBatis 框架知识Spring 框架知识SpringMVC 框架知识SpringBoot 框架知识 前言 提示:这里可以添加本文要记录的大概内…...

17 synchronized关键字使用 synchronized方法、synchronized块
synchronized方法、synchronized块 线程的同步不安全的线程示例1:示例2示例3 synchronized方法、synchronized块 线程的同步 并发:同一个对象被多个线程同时操作。 解决方案:让多个线程排队操作对象。 使用队列和锁解决多线程的并发问题。 同…...

django-基本环境配置
文章目录 django 环境安装1. 安装环境1.1 安装 Python (配置虚拟环境)1.1.1 步骤 1.2 Conda配置环境参考 django 环境安装 1. 安装环境 1.1 安装 Python (配置虚拟环境) 由于国外源速度慢,可以pip添加清华源 pip config set global.index-url https://pypi.tuna.…...

Springboot 实践(4)swagger-ui 测试controller
前文项目操作,完成了项目的创建、数据源的配置以及数据库DAO程序的生成与配置。此文讲解利用swagger-ui界面,测试生成的数据库DAO程序。目前,项目swagger-ui界面如下: 以”用户管理”为例,简单讲述swagger-ui测试数据库…...

PHP实践:分布式场景下的Session共享解决方案实现
🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责…...