Java基础学习笔记-1
前言
Java 是一门强大而广泛应用的编程语言,它的灵活性和跨平台特性使其成为许多开发者的首选。无论您是刚刚入门编程,还是已经有一些编程经验,掌握 Java 的基础知识都是构建更复杂程序的关键。
本学习笔记旨在帮助您深入了解 Java 编程语言的基础概念。我们将从变量和数据类型开始,逐步探索命名规则、运算符、用户输入和数据类型转换等主题。通过这些内容的学习,您将建立坚实的 Java 基础,为进一步的学习和应用打下坚实的基础。
1. 变量和数据类型
Demo01 - 变量的声明和使用
public class Demo01 {public static void main(String[] args) {// 变量int age = 18;System.out.println("年龄:" + age); // shift+alt+上下箭头,上移下移代码行age = 20;System.out.println("年龄:" + age); // ctrl+d复制行}
}
这个示例演示了如何声明和使用变量,并且展示了变量值的修改。
Demo02 - 常用数据类型
public class Demo02 {public static void main(String[] args) {// 常用数据类型int i = 10000; // 整数double d = 3.14; // 小数char c = '中'; // 字符String s = "中国"; // 字符串System.out.println("整数:" + i + ",小数:" + d + ",字符:" + c + ",字符串:" + s);}
}
在这个示例中,我们介绍了Java中常用的数据类型,包括整数、小数、字符和字符串。
Demo03 - 变量的声明、赋值和使用
public class Demo03 {public static void main(String[] args) {// 1. 声明int age;// 2. 赋值(java是在c++语言基础上改进过来的,要求变量在使用前必须先行赋值)age = 1;// 3. 使用System.out.println(age);}
}
这段代码展示了变量的声明、赋值和使用的基本步骤。
Demo04 - 常量的命名规则
public class Demo04 {public static void main(String[] args) {// 常量的命名法则,全部大写,如果有多个单词,用_隔开 比如MAX_VALUEfinal int AGE = 18;System.out.println(AGE);final String CHINA = "中华人民共和国";System.out.println(CHINA);}
}
这个示例说明了常量的命名规则,通常使用全大写字母,多个单词之间用下划线分隔。
2. 命名规则和约定
Demo05 - 标识符命名规则
public class Demo05 {public static void main(String[] args) {/*首字母必须是:字符 $ _后续必须是:字符 $ _ 数字注意,不能是关键字*/int a = 1;}
}
这段代码讲解了Java中标识符的命名规则,包括首字母要是字符、 或 , 后续可以是字符、 或_,后续可以是字符、 或,后续可以是字符、、_或数字。
Demo06 - 命名规范
// 类名 大驼峰法命名
public class Demo06 {public static void main(String[] args) {// 变量名 小驼峰法命名int myAge = 18;int age = 18;// 循环因子 i j k// 尽量使用有意义的单词(循环因子除外),实在单词没有合这的就採用拼音}
}
这个示例介绍了类名、变量名和循环因子的命名规范,推荐使用有意义的单词命名。
3. 运算符和表达式
Demo07 - 赋值运算符
public class Demo07 {public static void main(String[] args) {// 赋值运算符int age = 18; // =age += 2; // += 等价于 age = age + 2;age++; // += 等价于 age = age + 1; 间化為 age++/*+= ++-= --*=/=%= 取模 特别留意,除不乾净,余下来的那个数*/int year = 2022;int result = year % 10; // 余数System.out.println("餘数:" + result);year %= 100; // year = year % 100;System.out.println("餘数:" + year);}
}
这段代码展示了赋值运算符(+=、++、%=)的使用,以及取模运算符的示例。
4. 用户输入
Demo08 - 使用Scanner获取用户输入
import java.util.Scanner;public class Demo08 {public static void main(String[] args) {// 键盘输入功能 ScannerScanner scanner = new Scanner(System.in);System.out.println("请输入你的姓名:"); // 先提示,别人才好输入String name = scanner.next(); // 卡住,等待你输入姓名System.out.println("你输入的姓名是:" + name);}
}
这个示例演示了如何使用Scanner类从键盘获取用户输入。
Demo09 - 读取整数和小数
import java.util.Scanner;public class Demo09 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入整数:");int age = scanner.nextInt();System.out.println("请输入小数:");double money = scanner.nextDouble();System.out.println("整数:" + age + ",小数:" + money);}
}
这段代码演示了如何使用Scanner读取整数和小数,并将它们打印出来。
Demo10 - 计算和平均值
import java.util.Scanner;public class Demo10 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("输入王浩的3门功课的成绩:");System.out.println("Java:");int java = scanner.nextInt();System.out.println("PS:");int ps = scanner.nextInt();System.out.println("SQL:");int sql = scanner.nextInt();int chazhi = java - sql;System.out.println("方法1,Java和SQL的差:" + chazhi);System.out.println("方法2,Java和SQL的差:" + (java - sql)); // 一定要加小括号,调整一下优先级int pingjunzhi = (java + ps + sql) / 3;System.out.println("方法1,平均值:" + pingjunzhi);System.out.println("方法2,平均值:" + (java + ps + sql) / 3);}
}
这个示例读取三门课程的成绩,计算它们的差值和平均值,并展示了不同的计算方法。
5. 数值计算
Demo11 - 数值计算
public class Demo11 {public static void main(String[] args) {double java1 = 81.29;int duoliao = 2;double java2 = java1 + duoliao;System.out.println("第二次的平均分:" + java2);}
}
这个示例演示了数值计算,包括将一个双精度浮点数和一个整数相加,并将结果打印出来。
6. 数据类型和类型转换和关系运算符
Demo12 - 数据类型详解
public class Demo12 {public static void main(String[] args) {// 八个基本数据类型/* 整数1个字节 byte -128 -> +1272个字节 short -32768 -> +32767*4个字节 int -21亿 -> +21亿 大约8个字节 long -21....亿 -> +21....亿*/byte b1 = Byte.MAX_VALUE;System.out.println(b1);short s1 = Short.MAX_VALUE;System.out.println(s1);int i1 = Integer.MAX_VALUE;System.out.println(i1);long l1 = Long.MAX_VALUE;System.out.println(l1);/* 小数,本质是一个近似值4个字节 float -3.4028235E38 -> 3.4028235E38 大约3后面有38个零*8个字节 double -1.7976931348623157E308 -> 1.7976931348623157E308 大约1后面有308个零*/float f = Float.MAX_VALUE;System.out.println(f);double d = Double.MAX_VALUE;System.out.println(d);/* 字符2个字节 char 0-65535 唯一没有负数概念的*/char c1 = Character.MIN_VALUE;char c2 = Character.MAX_VALUE;System.out.println((int)c1);System.out.println((int)c2);/* 布尔1个字节 boolean 不是数值概念,而是一个真假 0000 000-*/boolean bool1 = Boolean.FALSE;boolean bool2 = Boolean.TRUE;System.out.println(bool1);System.out.println(bool2);}
}
这个示例详细解释了Java中的不同数据类型,包括整数、小数、字符和布尔类型。以下是其中一些重要概念的总结:
- 整数类型包括
byte、short、int和long,它们的取值范围不同。 - 小数类型包括
float和double,它们是近似值,有不同的精度和取值范围。 - 字符类型
char表示字符,占用2个字节,并且没有负数概念。 - 布尔类型
boolean表示真假值,占用1个字节。
这个示例有助于理解不同数据类型在Java中的特点和用途。
Demo13 - 强制类型转换
public class Demo13 {public static void main(String[] args) {char c1 = '中';int i = 1;// 强转语法:(目标类型)表达式char c2 = (char)(c1 + i);}
}
这段代码演示了强制类型转换的概念。在这里,我们将一个字符c1与一个整数i相加,然后将结果强制转换为字符类型char。这是因为字符之间的运算会被自动提升为整数,所以需要强制转换回字符类型。
Demo14 - 关系运算符
public class Demo14 {public static void main(String[] args) {/*关系运算符:> >= < <= == !=经歷了运算之后,结果的数据类型是 布尔*/int a = 10;int b = 10;boolean r1 = a > b;boolean r2 = a >= b;boolean r3 = a < b;boolean r4 = a <= b;boolean r5 = a == b;boolean r6 = a != b;System.out.println(r1); // falseSystem.out.println(r2); // trueSystem.out.println(r3); // falseSystem.out.println(r4); // trueSystem.out.println(r5); // trueSystem.out.println(r6); // false}
}
这个示例介绍了关系运算符(>、>=、<、<=、==、!=)的使用。这些运算符用于比较两个值之间的关系,并返回布尔值表示结果。在示例中,我们演示了不同的关系运算并打印了它们的结果。
总结
在学习笔记的各个部分中,我们详细介绍了 Java 基础知识的各个方面。从变量的声明和使用到数据类型的深入了解,再到命名规则、运算符和用户输入的应用,您已经对 Java 编程语言的核心概念有了清晰的认识。
通过这些基础知识,您将能够开始编写简单的 Java 程序,并逐渐扩展您的技能,构建更复杂的应用程序。不管您是新手还是有一些经验的开发者,这些基础知识都是您在 Java 编程之路上不可或缺的一部分。
相关文章:
Java基础学习笔记-1
前言 Java 是一门强大而广泛应用的编程语言,它的灵活性和跨平台特性使其成为许多开发者的首选。无论您是刚刚入门编程,还是已经有一些编程经验,掌握 Java 的基础知识都是构建更复杂程序的关键。 本学习笔记旨在帮助您深入了解 Java 编程语言…...
以太坊虚拟机
1.概述 以太坊虚拟机 EVM 是智能合约的运行环境。它不仅是沙盒封装的,而且是完全隔离的,也就是说在 EVM 中运行代码是无法访问网络、文件系统和其他进程的。甚至智能合约之间的访问也是受限的。 2.账户 以太坊中有两类账户(它们共用同一个…...
说说BTree和B+Tree
分析&回答 B树索引是B树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B树中的B代表平衡(balance),而不是二叉(binary),因为B树是从最早的平衡二叉树演化而来的。 接…...
8.1.3 Bit representation and coding - 解读
这段描述定义了一些序列,并规定了它们在编码信息时的使用方式。下面是对每个序列的解析: 1. 序列X:在位持续时间的一半之后,将发生一个“暂停”。这个序列用于表示逻辑“1”。 2. 序列Y:在整个位持续时间内,…...
spring 理解
spring容器 程序启动时,会给spring容器一个清单,清单中列出了需要创建的对象以及对象依赖关系,spring容器会创建和组装好清单中的对象,然后将这些对象存放在spring容器中,当程序中需要使用的时候,可以到容…...
实战SpringMVC之CRUD
目录 一、前期准备 1.1 编写页面跳转控制类 二、实现CRUD 2.1 相关依赖 2.2 配置文件 2.3 逆向生成 2.4 后台代码完善 2.4.1 编写切面类 2.4.2 编写工具类 2.4.3 编写biz层 2.4.4 配置mapper.xml 2.4.5 编写相应接口类(MusicMapper) 2.4.6 处…...
TCP机制之连接管理(三次握手和四次挥手详解)
TCP的连接管理机制描述了连接如何创建以及如何断开! 建立连接(三次握手) 三次握手的过程 所谓建立连接就是通信双方各自要记录对方的信息,彼此之间要相互认同;这里以A B双方确立男女朋友关系为例: 从图中可以看出,通信双方各自向对方发起一个"建立连接"的请求,同时…...
NLP(3)--GAN
目录 一、概述 二、算法过程 三、WGAN 1、GAN的不足 2、JS散度、KL散度、Wasserstein距离 3、WGAN设计 四、Mode Collapse and Mode Dropping 1、Mode Collapse 2、Mode Dropping 3、FID 四、Conditional GAN 一、概述 GAN(Generative Adversial Networ…...
无涯教程-JavaScript - IMLOG2函数
描述 IMLOG2函数以x yi或x yj文本格式返回复数的以2为底的对数。可以从自然对数计算复数的以2为底的对数,如下所示- $$\log_2(x yi)(log_2e)\ln(x yi)$$ 语法 IMLOG2 (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you want the bas…...
SpringBoot复习:(61)拦截器(HandlerInterceptor)的用法
一、自定义拦截器: package cn.edu.tju.interceptor;import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespo…...
【PyQT5教程】-01入门PyQT5
PyQT介绍 1.Qt 1.1 介绍 Qt(读作“cute”)是一个跨平台的C应用程序开发框架,最初由挪威公司Trolltech(现在是Qt公司的一部分)开发。Qt提供了一系列工具和类库,用于开发图形界面应用程序、命令行工具和服务…...
判断字符串s是否为字符串t的子序列
题目:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一…...
数据结构之队列的实现(附源码)
目录 一、队列的概念及结构 二、队列的实现 拓展:循环队列 三、初学的队列以及栈和队列结合的练习题 一、队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(Fi…...
[A题]2023 年全国大学生数学建模比赛思路、代码更新中.....
💥1 概述 构建以新能源为主体的新型电力系统,是我国实现“碳达峰”“碳中和”目标的一项重要措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。定日镜是塔式太阳能光热发电站(以下简称塔式电站)收集太阳能的基本组…...
Tailwind 练手项目
Tailwind 练手项目 用到的技巧 Tailwind CSS 速成 应该都提过了,我不记得这里有什么特别新的知识 整体完成图大概这样: 一个纯静态页面,没有做 JS 之类的特效,不过做了移动端适配,说实话我写到一半的时候改了不少………...
SpringMVC_SSM整合
一、回顾SpringMVC访问接口流程 1.容器加载分析 容器分析 手动注册WebApplicationContext public class ServletConfig extends AbstractDispatcherServletInitializer {Overrideprotected WebApplicationContext createServletApplicationContext() {//获取SpringMVC容器An…...
【操作系统】电脑上没有IIS怎么办
文章目录 前言一、查看二、解决 前言 有的新机刚开始在计算机-管理-服务下没有IIS网络服务怎么办。 一、查看 桌面计算机/此电脑 鼠标右键:管理 服务和应用 发现没有IIS 二、解决 控制面板 程序和功能 启动或关闭Windows功能 IIS相关的所有功能选中ÿ…...
【vue】vue项目中批量下载文件并打压缩包
前言 一开始用的是循环单个文件下载,即从后台获取到文件url列表,循环对每个url单独进行下载,这样的问题是每调用一次下载,浏览器都会进行“另存为”的弹框,很麻烦!!! 关闭“下载前…...
Linux中的软件管家——yum
目录 编辑 一,软件安装的方式 二,对yum的介绍 1.yum的作用 2,yum的库 三,yum下载软件的操作 1.yumlist 2.yuminstall 3.yumremove 四,yum源的转换 一,软件安装的方式 软件安装的方式大概分为三种…...
安卓绘制原理概览
绘制原理 Android 程序员都知道 Android 的绘制流程分为 Measure、Layout、Draw 三步骤,其中 Measure 负责测量 View 的大小Layout 负责确定 View 的位置Draw 负责将 View 画在屏幕上 由 ViewRootImpl 实现的 performTraversal 方法是 Measure、layout、draw 的真正…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
