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
上篇文章我们简单入门了动态规划(一般都是简单的上楼梯,分析数据等问题)点我跳转,今天给大家带来的是路径问题,相对于上一篇在一维中摸爬滚打,这次就要上升到二维解决问题,但都用的是动态规划思…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
