Java学习笔记01
1.1 Java简介
Java的前身是Oak,詹姆斯·高斯林是java之父。
1.2 Java体系
Java是一种与平台无关的语言,其源代码可以被编译成一种结构中立的中间文件(.class,字节码文件)于Java虚拟机上运行。
1.2.3 专有名词
- JDK提供编译、运行Java程序所需要的种种工具及资源。
- JRE是运行Java所依赖的环境的集合。
- JVM是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。
- SDK开发工具包。
因范围JDK>JRE>JVM,所以只需要安装JDK即可。
1.2.4 Java跨平台管理
Java字节码的格式通用,具有跨平台的特性,但这种跨平台建立在JVM虚拟机上,只有通过JVM处理之后,才可以将字节码转换为机器码运行。
JVM虚拟机使Java具有“一次编译,随处运行”的特质:
- 首先,将Java源程序编译成Java字节码。
- 其次,字节码在本地或通过网络传送给JVM。
- 再次,JVM对字节码进行即时编译或解释执行后形成二进制的机器码。
- 最后,生成的机器码可以在硬件设备上运行。
Java字节码的两种执行方式:
- 解释执行(通常采用):逐条读入,逐条翻译。
- 即时编译执行:JIT编译器将自己吗编译成本机器代码,并把编译过的机器码保存起来以备下次使用。
1.2.5 垃圾回收机制
GC实现动态回收垃圾,可以自动识别不再被程序引用的对象加以回收,可以通过将某对象的引用变量置空来加速对于该对象的回收。垃圾回收一般是在CPU空闲或内存不足时自动进行的,程序员无法确定GC回收的时间和顺序,虽然可以通过调用对象的finalize()来建议,但仍不能保证。此外,由于JRE会使用后台进程检测和控制GC,所以必然会对系统产生一定影响。
1.3.2 JDK目录
- bin:JDK中命令以及工具所在目录。
- jre:运行环境目录。
- lib:类库所在目录。
- db:附带数据库目录。
- include:包含本地代码的C语言头文件的目录。
- scr.zip:源代码压缩文件。
1.3.3 JDK常用工具
- javac:编译器,编译为字节码文件(.class文件)。gcc是c语言的编译器,c++是c++的编译器。
- java:Java字节码解释器。解释执行字节码文件。
- javadoc:文档生成器。代码中的文档注释生成HTML格式的Java API文档。
1.4 Hello World 程序
所有代码都写在类体之中,因为Java是一个纯面向对象语言,一个完整的Java程序至少有一个类。一个Java文件只能有一个公共类,且该公共类的类名与Java文件名必须相同,但可以有多个非公共类。
public class HelloWord {public static void main(String[] args) {System.out.println("Hello world!");}
}
编译Java程序:
javac HelloWorld.java
运行Java程序:
javac HelloWorld
1.5 输出与注释
1.5.1 打印输出
System.out.println("Hello world!"); // 打印一行
System.out.print("Hello World!"); // 打印一段
1.5.2 注释
// 单行注释/** 这是多行注释*//*** 这是文档注释* 可以通过javacdoc将注释的内容生成HTML格式JavaAPI文档*/
2.1.3 标识符
除了下划线"_"和"$"符号以外,不包含任何其他特殊字符,如空格。
2.3.1 基本类型
基本类型 | 关键字 | 大小 |
---|---|---|
布尔型 | boolean | 1位 |
字节型 | byte | 8位 |
短整型 | short | 16位 |
字符型 | char | 16位 |
整型 | int | 32位 |
浮点型 | float 后面加F/f | 32位 |
长整型 | long 后面加L/l | 64位 |
双精度 | double 后面加D/d | 64位 |
字符型可以直接使用Unicode值来表示,比如'\u00FF'等。
2.3.2 引用类型
Java包括5种引用类型:
- 数组
- 类
- 接口
- 枚举
- 空类型:值为null的类型。
2.3.3 类型转换
自动类型转换:
不损失精度——
byte——>short——>int——>long/double
char——>int
float——>double
损失精度(整型转空间不大于的浮点数)——
int---->float
long---->float/double
强制类型转换:
数据类型变量1 = (数据类型)变量2;
2.4 操作符
一元操作符:++、--、!、~、(type)强转
对于/和%来讲,如果其中至少有一个操作数是浮点数,就可以允许除数为0,结果是Infinity和(-Infinity);而如果是对0取余,那任何操作数结果都是NaN(非数)。
位运算:
操作符 | 描述 | 示例(均原码) |
---|---|---|
& | 按位与,1与1返回1 | 001 & 111 = 001 |
| | 按位或,存在1返回1 | 001 | 101 = 101 |
^ | 按位异或,相同返回0反之返回1 | 001 ^ 101 = 100 |
<< | 左移,右边空出补0,等价乘方 | 10011010 << 1 = 10110100 |
>> | 右移,左边空出补0/1(看符号),等价开方 | 10011010 >> 1 = 10001101 |
>>> | 无符号右移,无视正负号左边空出补0 | 10011010 >> 1 = 01001101 |
关系运算:
==使用过程中,如果比较的两个都是数值型,那只要值相等都返回true,即使是字符和整型、整型和浮点比较
2.5.3 转移语句
break和标签语句配合使用可以跳出任意循环/程序块。
outer : for(int i = 0; i < 5; i ++) {for(int j = 0; j < 5; j ++) {System.out.println(i+" ");if(j == 2) break outer;}}
2.6 数组
直接输出数组名的时候,会输出数组对象的哈希码,但是如果是字符数组,则会输出一个”“空字符串,这是因为Java内部会将一个字符型数组看成一个字符串。数组变量名储存在栈中,也就是首地址,而在堆中储存数组元素。
数组初始化:
// 静态初始化:int[] a1 = {1, 2, 3};int[] a2 = new int[] {1, 2, 3};int a3[] = {1, 2, 3};// 动态初始化:int[] a4 = new int[2];a4[0] = 1;
如果是二维数组,则可以不必要求每个数据元素的长度相等,也就是内部的一维数组的长度可以不必相同,使用动态初始化即可。
相关文章:
Java学习笔记01
1.1 Java简介 Java的前身是Oak,詹姆斯高斯林是java之父。 1.2 Java体系 Java是一种与平台无关的语言,其源代码可以被编译成一种结构中立的中间文件(.class,字节码文件)于Java虚拟机上运行。 1.2.3 专有名词 JDK提…...

SOC子模块---RTC and watchdog
RTC RTC大致执行过程: 对SOC 中的锁相环或者外部晶振的时钟进行计数;产生时,分,秒的中断;送给中断控制器;中断控制器进行优先权选择后送给cpu;Cpu执行中断服务程序;在中断服务程序…...

【测试开发学习历程】MySQL增删改操作 + 备份与还原 + 索引、视图、存储过程
前言: SQL内容的连载,到这里就是最后一期啦! 如果有小伙伴要其他内容的话,我会追加内容的。(前提是我有学过,或者能学会) 接下来,我们就要开始python内容的学习了 ~ ~ 目录 1 …...

StarRocks 助力金融营销数字化进化之路
作者:平安银行 数据资产中心数据及 AI 平台团队负责人 廖晓格 平安银行五位一体,做零售金融的领先银行,五位一体是由开放银行、AI 银行、远程银行、线下银行、综合化银行协同构建的数据化、智能化的零售客户经营模式,这套模式以数…...

医院预约挂号系统设计与实现|jsp+ Mysql+Java+ Tomcat(可运行源码+数据库+设计文档)
本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,…...

IIS7/iis8/iis10安装II6兼容模块 以windows2022为例
因安全狗的提示 安全狗防护引|擎安装失败 可能原因是: IIS7及以上版本末安装1IS6兼容模块! .所以操作解决 如下. 在开始菜单中,找到服务器管理器.找到下图的IIS,右键添加角色和功能,找到web服务器的管理工具选项,iis6管理兼容性 打钩并安装. 如下图...

Python爬虫-批量爬取星巴克全国门店
前言 本文是该专栏的第22篇,后面会持续分享python爬虫干货知识,记得关注。 本文笔者以星巴克为例,通过Python实现批量爬取目标城市的门店数据以及全国的门店数据。 具体的详细思路以及代码实现逻辑,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地址:aHR0cHM…...
C/C++ 设置Socket的IP_TOS选项
IP TOS选项是指示IP报文转发的优先级,QOS控制的一种,常规的IP协议TOS都为0,就是普通报文。 设置: IPV4/TOS设置(Socket),IPTOS_LOWDELAY 表示FLASH优先级(一般用在游戏,…...
【tensorflow_gpu】安装合集
tensorflow_gpu与CUDA、cuDNN、Python版本对应关系 版本对应列表 tensorflow的清华源wheel tensorflow的清华源wheel列表 tensorflow_gpu安装指令 使用conda安装指定版本的tensorflow_gpu conda install tensorflow-gpu1.2.0使用wheel安装指定版本的tensorflow_gpu pip …...
Go 实现fsnotify
【官方操作】 package mainimport ("log""github.com/fsnotify/fsnotify" )func main() {watcher, err : fsnotify.NewWatcher()if err ! nil {log.Fatal(err)}defer watcher.Close()done : make(chan bool)go func() {for {select {case event, ok : <…...

Flink GateWay、HiveServer2 和 hive on spark
Flink SQL Gateway简介 从官网的资料可以知道Flink SQL Gateway是一个服务,这个服务支持多个客户端并发的从远程提交任务。Flink SQL Gateway使任务的提交、元数据的查询、在线数据分析变得更简单。 Flink SQL Gateway的架构如下图,它由插件化的Endpoi…...
阿里云国际设置黑白名单(针对高防实例IP)
DDoS高防支持针对高防实例设置黑名单和白名单,以拦截或放行指定IP的访问请求,配置后对该实例所有的业务生效。本文九河云介绍如何配置黑白名单。 功能介绍 黑名单IP的访问流量将被DDoS高防实例直接丢弃。白名单IP的访问流量将被DDoS高防实例直接放行。…...

Docker 入门使用说明
Docker 入门使用说明 Docker 安装 Docker 官网:Docker Docker 安装说明:Docker 安装说明 这里由于 Docker 在实时更新,所以每次安装 Docker 用来导入 key 的链接可能会有变化,这里就参考官方的安装方法即可 Docker 常用命令说…...

UE5 LiveLink 自动连接数据源,以及打包后不能收到udp消息的解决办法
为什么要自动连接数据源,因为方便打包后接收数据,这里我是写在了Game Instance,也可以写在其他地方,自行替换成Beginplay和Endplay 关于编辑器模式下能收到udp消息,打包后不能收到消息的问题有两点需要排查,启动打包后…...

国内ip切换是否合规?
在网络使用中,IP地址切换是一种常见的行为,可以用于实现隐私保护、访问地域限制内容等目的。然而,对于国内用户来说,IP地址切换是否合规一直是一个备受关注的话题。在中国,网络管理严格,一些IP切换行为可能…...

Flutter 3.13 之后如何监听 App 生命周期事件
在 Flutter 中,您可以监听多个生命周期事件来处理应用程序的不同状态,但今天我们将讨论 didChangeAppLifecycleState 事件。每当应用程序的生命周期状态发生变化时,就会触发此事件。可能的状态有 resumed 、 inactive 、 paused 、 detached …...
基于docker创建深度学习开发环境
基于docker创建深度学习开发环境 记录几个链接 第一步:配置docker环境,此处大把教程,不再赘述第二步:拉取nvidia做好的cuda和cudnn镜像: docker pull nvcr.io/nvidia/cuda:12.2.0-devel-ubuntu20.04如果有其他需求&a…...

Linux系统——硬件命令
目录 一.网卡带宽 1.查看网卡速率——ethtool 网卡名 2.查看mac地址——ethtool -P 网卡名 二、内存相关 1.显示系统中内存使用情况——free -h 2.显示内存模块的详细信息——dmidecode -t memory 三、CPU相关 1.查看CPU架构信息——lscpu 2.性能模式 四、其他硬件命…...

R语言Meta分析核心技术:回归诊断与模型验证
R语言作为一种强大的统计分析和绘图语言,在科研领域发挥着日益重要的作用。其中,Meta分析作为一种整合多个独立研究结果的统计方法,在R语言中得到了广泛的应用。通过R语言进行Meta分析,研究者能够更为准确、全面地评估某一研究问题…...

动态规划Dynamic Programming
上篇文章我们简单入门了动态规划(一般都是简单的上楼梯,分析数据等问题)点我跳转,今天给大家带来的是路径问题,相对于上一篇在一维中摸爬滚打,这次就要上升到二维解决问题,但都用的是动态规划思…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...