Java(1)入门基础
1. Java简介
1.1 什么是Java
Java 是一款由Sun Microsystems公司(现为甲骨文公司Oracle Corporation的一部分)的James Gosling及其团队在1995年发布的高级编程语言。同时,Java 是一种面向对象的语言,这意味着它允许开发者通过创建类和对象来模拟现实世界的场景和行为。
1.2 Java的主要特性
Java 语言是:
1.强制面向对象的:
Java 语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制。
2.分布式的:
Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。
3.原生支持多线程的:
在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。
4.跨平台性的:
通过Java语言编写的应用程序在不同的系统平台上都可以运行。(虚拟机)
1.3 JDK(Java Development Kit)
JDK 是提供给 Java 开发人员使用的开发工具集,其中包含了 Java 的开发工具,也包括了 JRE 。
所以安装了 JDK,就不用在单独安装 JRE 了。
注:【JRE:Java 运行环境 ( Java Runtime Environment ):包括 Java 虚拟机(JVM)、Java 编译器和 Java 程序所需的核心类库等】
2. HelloWorld
开发第一个程序 HelloWorld
//声明本类所属包
package org.example1;
//Helloworld:类名(可以理解为程序名),注意:必须与文件名保持一致
public class Helloworld {//程序的入口(程序执行时,最先运行的方法),一般叫做 main 方法public static void main(String[] args) {//在控制台输出一段文本“HelloWorld”System.out.println("Hello World!");}
}
注:System.out.print() 与 System.out.println():使用println()方法输出文本后,会在输出的文本后面自动添加一个换行符(\n),使得光标移动到下一行的开始位置。
3. 名词解释
- 关键字:Java 程序语言已经使用了的标识符(单词)叫做关键字。
- 包:类似与 Windows 操作系统的文件夹,用来管理 Java 源代码,包名采用点分制,必须使用小写字母。
- package:一种修饰符,用来声明程序所在包。
- public:一种访问修饰符,代表公有的含义,在任意地方都可以使用。
- class:用来声明一个类(暂时理解为一个程序)的关键字。
- static:一种修饰符,用来修饰类及类的成员,表示静态的。
- void:一种修饰符,用来修饰方法的,表示没有返回值。
- 控制台:就是 Windows 操作系统使用 CMD 命令打开的窗口,又称 Console。
- Pascal:一种命名规范的名称,叫做 Pascal 命名法,该命名法的规则是(名称首字母必须大写,其 后的每个单词的首字母都需要大写)。
- Camel:一种命名规范的名称,叫做 Camel 命名法,该命名法的规则是(名称首字母必须小写,其 后的每个单词的首字母都需要大写)。
4. 关键字、保留字
- 关键字:
if,else,while,for,class,public,private等。 - 保留字:
goto等(尽管在Java中未使用,但作为保留字以避免未来的冲突)。
4.1 关键字
关键字是编程语言中预先保留的单词,它们用于表示语言的语法结构或特定的操作,
也用于定义程序的结构和逻辑,如控制语句(if, else, for, while等)、访问修饰符(public, private等)和类型定义(class, interface等)。
关键字中所有字母都为小写,目前共计 50 个:
关键字详情官方地址
4.2 保留字
保留字是编程语言中当前未使用,但预留给未来版本使用的词汇。
它的存在是为了确保语言的未来发展不会与现有的代码产生冲突。
5. 标识符
对于常量、变量、函数、语句块、类、项目等都需要一个名字,这些我们都统统称为标识符。
命名规则:
- 由 26 个英文字母大小写,0 至 9,_或$组成。
- 数字不可以开头。
- 不可以使用关键字和保留字。
- 严格区分大小写。
6. 编码与解码
编码 :将字符转换成计算机可以存储和处理的格式。(二进制编码即指0和1)
解码:将计算机存储的编码格式转换回人类可读的字符。
字符集:编码和解码所采用的规则,我们称为字符集。(字符集有:ASCII、ISO-8859-1、GBK、GB2312、👉UTF-8万国码👈等)
7. 变量
7.1 变量の定义
- 内存中的一个存储区域。
- 该区域的数据可以在同一类型范围内不断变化。
- 变量是程序中最基本的存储单元。
- 作用:用于在内存中保存数据。
7.2 变量の声明并赋值
int num = 10;
int num1 = 10, num2 = 20;
8. 数据类型
8.1 基本数据类型
整型:
byte:8位有符号整数,范围从-128到127。
short:16位有符号整数,范围从-32,768到32,767。
int:32位有符号整数,范围从-2,147,483,648到2,147,483,647。
long:64位有符号整数,范围从-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
浮点型:
float:32位单精度浮点数。
double:64位双精度浮点数。
字符型:
char:16位Unicode字符。
布尔型:
boolean:只有两个可能的值:true和false。(常用来判断逻辑条件)
8.2 引用数据类型
数组:
相同类型的元素组成的固定大小的集合。
类(Class):
用户定义的自定义数据类型,可以包含数据和方法。
接口(Interface):
完全由抽象方法组成的类型,可以被类实现。
9.数据类型转换
9.1 自动类型转换
自动类型转换是指在不需要程序员显式指定的情况下,编译器自动进行的数据类型转换。
通常发生在小范围数据类型向大范围数据类型赋值时。
- 数值类型:从小范围的整数类型(如
byte、short)自动转换为大范围的整数类型(如int、long)。 - 浮点类型:从
float自动转换为double。 - 字符类型:
char可以自动转换为int(因为char实际上是一个较大的无符号整数)。
9.2 显式(强制)类型转换
显式类型转换是指程序员在代码中明确指定进行的数据类型转换。
通常发生在大范围数据类型向小范围数据类型赋值时,因为可能会丢失数据。
- 数值类型:如将
double显式转换为int,将舍弃小数部分。 - 浮点转整数:如将
float或double转换为整数类型时,小数部分将被截断。 - 整数转浮点:如将
int转换为float或double,整数将被转换为对应的浮点数。 - 字符转整数:将
char转换为int,可以得到对应的Unicode码点值。 - 字符串转其他类型:可以使用
parseInt、parseFloat等方法将字符串转换为数值类型。
String str = "43";
int num = Integer.parseInt(str);
double num2 = 100.0;
int result = (int) (num2 * num2);
9.3 接收用户控制台输入
//格式
//创建用户接收控制台输入的 sc 对象(暂时理解为变量)
Scanner sc=new Scanner(System.in);
//提示用户输入
System.out.println("请输入学生姓名:");
//接收用户输入
String name=sc.next();
//接收方法有
sc.next();
sc.nextByte();
sc.nextShort();
sc.nextInt();
sc.nextFloat();
sc.nextDouble();
sc.nextBoolean();
sc.nextLong();
相关文章:
Java(1)入门基础
1. Java简介 1.1 什么是Java Java 是一款由Sun Microsystems公司(现为甲骨文公司Oracle Corporation的一部分)的James Gosling及其团队在1995年发布的高级编程语言。同时,Java 是一种面向对象的语言,这意味着它允许开发者通过创…...
2024.1.5总结
今日不开心:这周本来想花点时间学习的,没想到全都花在刷视频,外出消费去了。 今日思考: 1.找对象这件事确实不能强求,顺其自然吧,单身和不单身,其实,各有各的利弊。在一次坐地铁的过程中,我一…...
【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】
目录😋 任务描述 相关知识 一、循环控制 / 跳转语句的使用 1. 循环控制语句(for 循环) 2. 循环控制语句(while 循环) 3. 跳转语句(break 语句) 4. 跳转语句(continue 语句&…...
在调用 borrowObject 方法时,Apache Commons Pool 会根据连接池的配置触发一系列相关的方法
在调用 borrowObject 方法时,Apache Commons Pool 会根据连接池的配置触发一系列相关的方法 1. GrpcChannel 的概念 GrpcChannel 是 gRPC 客户端与服务器之间通信的核心组件。它是基于 HTTP/2 的连接,支持多路复用,即通过单个通道可以发送多…...
Linux中的tty和pts概念和区别
目录 1、什么是tty (1)tty的概念 (2)tty0 (3)tty1~6 2、什么是pts (1)pts的含义 (2)pts的具体解释 3、pts与 tty 设备的比较 4、设备文件的位置 1、什…...
【SOC 芯片设计 DFT 学习专栏 -- RTL 中的信号名和 Netlist 中的信号名差异】
Overview 本文将介绍 soc 设计中 RTL-to-Netlist 映射及 RTL 中的信号名和 Netlist 中的信号名差异, 在 SoC设计中,RTL-to-Netlist映射 是从RTL(Register Transfer Level)代码转换为Netlist的过程。这通常涉及将用硬件描述语言&…...
机器学习经典算法——线性回归
目录 算法介绍 一元线性回归模型 多元线性回归模型 误差项分析 相关系数 算法案例 一元线性回归预测——广告销售额案例 二元线性回归预测——血压收缩案例 多元线性回归预测——糖尿病案例 算法介绍 线性回归是利用数理统计中回归分析,来确定两种或两种…...
MLU上使用MagicMind GFPGANv1.4 onnx加速!
文章目录 前言一、平台环境准备二、环境准备1.GFPGAN代码处理2.MagicMind转换修改env.sh修改run.sh参数解析运行 3.修改后模型运行 前言 MagicMind是面向寒武纪MLU的推理加速引擎。MagicMind能将人工智能框架(TensorFlow、PyTorch、Caffe与ONNX等)训练好…...
VulnHub—potato-suncs
使用命令扫描靶机ip arp-scan -l 尝试访问一下ip 发现一个大土豆没什么用 尝试扫描一下子域名 没有发现什么有用的信息 尝试扫描端口 namp -A 192.168.19.137 -p- 尝试访问一下端口,发现都访问不进去 查看源代码发现了网页的标题 potato,就想着爆破一下密码 hydr…...
【Flink CDC】Flink CDC的Schema Evolution表结构演变的源码分析和流程图
Flink CDC版本:3.2.1 说明:本文从SchemaOperator接收到,表结构变更事件开始,表结构变更事件应由source端产生,本文不讨论。 可以先看流程图,研究源码。 参考文章: Flink cdc3.0动态变更表结构—…...
【智能算法】改进蚁狮优化算法【matlab】
目录 1 主要内容 2 部分程序 3 程序结果 下载链接 1 主要内容 该程序方法复现《改进蚁狮算法的无线传感器网络覆盖优化》两种改进算法模型,即原始ALO算法的基础上添加了两种改进策略: - 改进1:将原先的间断性边界收缩因子变为连续性边界…...
swagger导出json
要将 Swagger(或者 OpenAPI)文档导出为 JSON 文件,通常有几种常见的方法,具体取决于你使用的 Swagger 工具(如 Swagger UI、Swagger Editor、Swagger Hub 等)。下面列出了几种常见的导出 JSON 文件的方法。 1. 通过 Swagger UI 导出 JSON 文件 如果你在使用 Swagger UI…...
Go语言的 的引用数据类型(Reference Data Types)核心知识
Go语言的引用数据类型(Reference Data Types)核心知识 引言 Go语言作为一种现代编程语言,因其简洁的语法、强大的并发支持以及丰富的标准库而受到广泛欢迎。在Go语言中,数据类型可以分为值类型和引用类型。本文将深入探讨Go语言…...
JAVA解析Excel复杂表头
废话不多说,直接上源码。前后端都有哦~~~~~~~~ 能帮到你记得点赞收藏哦~~~~~~~&#…...
jmeter 中 BeanShell 预处理程序、JSR223后置处理程序使用示例
1. 各个组件如何新建的? 2. "http请求" 组件内容样例: "消息体数据" 源码: {"task_tag": "face_detect","image_type": "base64","extra_args": [{"model"…...
我的创作纪念日——《惊变128天》
我的创作纪念日——《惊变128天》 机缘收获日常成就憧憬 机缘 时光飞逝,转眼间,我已在这条创作之路上走过了 128 天。回顾起 2024 年 8 月 29 日,我满怀忐忑与期待,撰写了第一篇技术博客《讲解LeetCode第1题:两数之和…...
vuedraggable 选项介绍
vuedraggable 是基于 SortableJS 的 Vue 组件,提供了丰富的选项来定制拖拽行为。以下是 vuedraggable 常用的选项和它们的详细说明: 常用选项介绍 group 配置拖拽分组。多个列表可以共享同一个分组,允许它们之间的项目互相拖拽。 group: { na…...
微信小程序获取后端数据
在小程序中获取后端接口数据 通常可以使用 wx.request 方法,以下是一个基本示例: // pages/index/index.js Page({data: {// 用于存储后端返回的数据resultData: [] },onLoad() {this.fetchData();},fetchData() {wx.request({url: https://your-backe…...
ThreadLocal` 的工作原理
ThreadLocal 的工作原理: ThreadLocal 是 Java 提供的一个类,它用于为每个线程提供独立的变量副本。也就是说,多个线程访问同一个 ThreadLocal 变量时,每个线程看到的值都是不同的,相互隔离,互不干扰。 T…...
数据挖掘教学指南:从基础到应用
数据挖掘教学指南:从基础到应用 引言 数据挖掘是大数据时代的核心技术之一,它从大量数据中提取有用信息和知识。本教学文章旨在为学生和初学者提供一个全面的数据挖掘学习指南,涵盖数据挖掘的基本概念、流程、常用技术、工具以及教学建议。…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)
Name:3ddown Serial:FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名:Axure 序列号:8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...
node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...
从零手写Java版本的LSM Tree (一):LSM Tree 概述
🔥 推荐一个高质量的Java LSM Tree开源项目! https://github.com/brianxiadong/java-lsm-tree java-lsm-tree 是一个从零实现的Log-Structured Merge Tree,专为高并发写入场景设计。 核心亮点: ⚡ 极致性能:写入速度超…...
Ray框架:分布式AI训练与调参实践
Ray框架:分布式AI训练与调参实践 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 Ray框架:分布式AI训练与调参实践摘要引言框架架构解析1. 核心组件设计2. 关键技术实现2.1 动态资源调度2.2 …...
uniapp获取当前位置和经纬度信息
1.1. 获取当前位置和经纬度信息(需要配置高的SDK) 调用uni-app官方API中的uni.chooseLocation(),即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...
