Java-模块二-1
print和println
print 和 println 是两种常用的输出方法,主要用于在控制台上打印信息。它们的行为因编程语言而异,但通常具有以下特点:
Java中的print和println
-
System.out.print():此方法用于打印输出内容到控制台,但与println不同的是,它不会在输出后自动换行。这意味着如果连续使用print,所有输出将出现在同一行上。 -
System.out.println():此方法除了打印输出内容外,还会在末尾添加一个换行符(newline),使得后续的输出会从新的一行开始。
常量
字符常量
字符常量:带单引号的’‘单引号中必须有有且只能有一个内容’tab键也算’
在编程中,常量是指程序运行期间其值不能被改变的标识符。它们有助于提高代码的可读性和维护性,并允许编译器进行优化。根据不同的标准,常量可以有不同的分类方式。下面从几个方面来解释常量及其分类:
1. 根据作用范围分类
-
局部常量:仅在定义它的代码块(如函数、方法内部)内有效。这类常量通常用于限制其使用范围,以避免命名冲突或不必要的全局暴露。
-
全局常量:在整个程序范围内都有效。在Java中,通过将常量声明为
public static final,可以使该常量在不实例化类的情况下访问。
2. 根据数据类型分类
-
基本数据类型的常量:包括整型(int, long等)、浮点型(float, double)、字符型(char)和布尔型(boolean)等。例如,在Java中定义一个整数常量
final int MAX_SIZE = 100;。 -
字符串常量:虽然在技术上,String在Java中是对象而不是基本数据类型,但因其使用广泛而单独列出。例如,
public static final String APP_NAME = "MyApplication";。 -
对象引用常量:指向不可变对象的引用。值得注意的是,尽管引用本身是固定的(即不能再指向其他对象),但如果对象本身是可变的,那么其内容是可以改变的。为了确保完全不可变,应使用不可变对象。
在编程中,常量间的运算与变量间的运算基本相同,允许你执行各种算术运算(如加法、减法、乘法、除法等)和逻辑运算。常量的运算结果可以在编译时确定(对于编译时常量),也可以在程序运行时计算得出(对于运行时常量)。下面以Java为例说明常量间的运算:
基本算术运算
/前后都是整数结果只取整数,前后只要有一个小数,结果就是小数
假设我们定义了几个整数类型的常量:
public class ConstantArithmetic {public static final int WIDTH = 10;public static final int HEIGHT = 20;public static void main(String[] args) {// 常量间的加法运算final int AREA = WIDTH * HEIGHT;System.out.println("Area: " + AREA); // 输出:Area: 200// 常量间的减法运算final int DIFFERENCE = HEIGHT - WIDTH;System.out.println("Difference: " + DIFFERENCE); // 输出:Difference: 10// 常量间的除法运算final int RATIO = HEIGHT / WIDTH;System.out.println("Ratio: " + RATIO); // 输出:Ratio: 2// 注意:整数除法会丢弃小数部分final int REMAINDER = HEIGHT % WIDTH;System.out.println("Remainder: " + REMAINDER); // 输出:Remainder: 0}
}
布尔运算
对于布尔类型的常量,可以进行逻辑运算如&&(逻辑与)、||(逻辑或)和!(逻辑非)。
public class ConstantLogic {public static final boolean FLAG_A = true;public static final boolean FLAG_B = false;public static void main(String[] args) {// 常量间的逻辑与运算final boolean resultAnd = FLAG_A && FLAG_B;System.out.println("Result AND: " + resultAnd); // 输出:Result AND: false// 常量间的逻辑或运算final boolean resultOr = FLAG_A || FLAG_B;System.out.println("Result OR: " + resultOr); // 输出:Result OR: true// 常量的逻辑非运算final boolean resultNot = !FLAG_A;System.out.println("Result NOT: " + resultNot); // 输出:Result NOT: false}
}
组合使用
常量间还可以进行组合运算,包括不同类型的常量之间的运算,只要这些操作是类型兼容的即可。
public class MixedConstants {public static final int VALUE_A = 5;public static final double VALUE_B = 3.2;public static void main(String[] args) {// 整型和浮点型常量的混合运算final double mixedResult = VALUE_A + VALUE_B;System.out.println("Mixed Result: " + mixedResult); // 输出:Mixed Result: 8.2}
}
需要注意的是,在进行运算时,要确保参与运算的数据类型是兼容的,并且了解类型转换规则,比如整数和浮点数之间的运算会导致整数被自动提升为浮点数。通过合理地利用常量间的运算,可以使代码更加简洁和易于理解。
3. 根据是否可以在编译期确定分类
-
编译时常量:其值在编译时就可以确定,比如直接赋值的基本类型或字符串。这些常量在编译阶段就会被替换为其实际值,有助于提高性能。
-
运行时常量:其值需要在程序运行过程中才能确定。例如,通过构造函数或初始化块赋值的常量。
4. 常见编程语言中的实现
- Java:使用
final关键字定义常量。对于基本类型和字符串,一旦赋值就不能再更改;对于对象引用,则表示引用地址不可变,但对象状态可能改变
变量
在编程中,变量是存储数据的容器,而变量的数据类型则决定了这个容器可以存储什么类型的数据、该数据如何被操作以及它占用多少内存空间。不同的编程语言支持不同类型的数据类型,并且每种数据类型都有其特定的用途和操作规则。下面将介绍一些常见的数据类型及其特性:
基本数据类型(Primitive Data Types)
-
整型(Integer Types)
- 用于表示没有小数部分的数值。
- 在Java中包括
byte,short,int,long等,分别占用不同的字节大小,能够表示不同范围内的整数。
-
浮点型(Floating-Point Types)
- 用于表示包含小数部分的数值。
- Java中的
float和double类型,其中double提供更高的精度和更大的范围。
-
字符型(Character Type)
- 表示单个字符,如字母或符号。
- 在Java中使用
char类型表示,通常占用2个字节,并采用Unicode编码。
-
布尔型(Boolean Type)
- 用于表示逻辑值,只有两个可能的值:
true或false。 - 在Java中通过
boolean关键字定义。
- 用于表示逻辑值,只有两个可能的值:
引用数据类型(Reference Data Types)
-
类(Class)
- 是创建对象的模板或蓝图,定义了属性和方法。
- 如
String类,虽然String的行为有时类似于基本数据类型,但它实际上是引用类型。
-
接口(Interface)
- 定义了一组行为规范,但不实现这些行为。具体实现由实现了该接口的类完成。
-
数组(Array)
- 可以存储固定数量的同类型元素的集合。
- 数组的大小一旦确定,在Java中就不能更改。
-
枚举(Enum)
- 特殊的数据类型,允许变量成为一组预定义常量。
其他数据类型
-
包装类(Wrapper Classes):对于每种基本数据类型,Java提供了相应的包装类(如
Integer,Double,Character,Boolean等),使得基本数据类型可以像对象一样处理。 -
无类型(Void):主要用于方法返回类型,表示该方法不返回任何值。
数据类型的选取
选择合适的数据类型对程序的功能性和效率至关重要。例如,如果知道一个变量只会持有小范围内的整数值,可以选择较小的整型(如byte或short),以节省内存。相反,如果需要处理非常大或者非常高精度的数值,则应选择较大的类型(如long或double)。
变量在编程中是非常基础且重要的概念,它用于存储数据值。通过变量,程序可以执行各种操作,如计算、条件判断等。以下是关于如何声明、初始化和使用变量的一些基本指南,以Java为例进行说明:
变量的声明
声明一个变量需要指定它的数据类型和名称。例如:
int age;
String name;
boolean isStudent;
这里分别声明了一个整型变量age、一个字符串变量name和一个布尔型变量isStudent。
变量的初始化
变量声明后通常需要初始化,即赋予初始值。可以同时在声明时初始化:
int age = 20;
String name = "Alice";
boolean isStudent = true;
也可以先声明再赋值:
int age;
age = 20;
使用变量
一旦变量被初始化,就可以在程序中使用它们来进行各种操作,比如数学运算、逻辑判断等。
数学运算示例:
int x = 10;
int y = 20;
int sum = x + y;
System.out.println("Sum: " + sum); // 输出 Sum: 30
字符串连接示例:
String firstName = "John";
String lastName = "Doe";
String fullName = firstName + " " + lastName;
System.out.println("Full Name: " + fullName); // 输出 Full Name: John Doe
条件语句示例:
int temperature = 30;
if (temperature > 25) {System.out.println("It's warm outside.");
} else {System.out.println("It's cool outside.");
}
变量的作用域
变量的作用域决定了它可以在哪里被访问。作用域分为局部变量(在方法或代码块内定义)、成员变量(类内部但不在任何方法内定义)和静态变量(使用static关键字定义)。
-
局部变量:只能在其声明的方法或代码块中访问。
-
成员变量:可以在整个类的所有方法中访问。
-
静态变量:属于类本身,所有实例共享同一份拷贝。
最佳实践
-
命名规范:采用有意义的名字,并遵循语言的命名约定。例如,在Java中,变量名应以小写字母开头,多个单词间用驼峰命名法区分。
-
初始化检查:确保在使用变量之前已经正确初始化,避免未初始化的变量导致运行时错误。
-
作用域最小化:将变量的作用域限制到尽可能小的范围,有助于减少潜在的错误并提高代码的可读性。
在Java中,尽管String的行为有时类似于基本数据类型,例如可以使用+运算符进行连接操作,但实际上String是一个类,属于引用数据类型。
Java提供了自动装箱(Autoboxing)和拆箱(Unboxing)机制来简化基本数据类型和它们对应的包装类之间的转换过程,但没有为String提供类似的基本类型形式。
相关文章:
Java-模块二-1
print和println print 和 println 是两种常用的输出方法,主要用于在控制台上打印信息。它们的行为因编程语言而异,但通常具有以下特点: Java中的print和println System.out.print():此方法用于打印输出内容到控制台,…...
k8s--集群内的pod调用集群外的服务
关于如何让同一个局域网内的Kubernetes服务的Pod访问同一局域网中的电脑上的服务。 可能的解决方案包括使用ClusterIP、NodePort、Headless Service、HostNetwork、ExternalIPs,或者直接使用Pod网络。每种方法都有不同的适用场景,需要逐一分析。 例如&…...
AI比人脑更强,因为被植入思维模型【20】卡尼曼双系统理论
定义 卡尼曼双系统理论思维模型是由诺贝尔经济学奖得主丹尼尔卡尼曼提出的,该理论认为人类的思维系统可以分为两个相互关联但又具有不同特点的子系统,即系统1(快思考)和系统2(慢思考)。系统1是基于直觉、经…...
ccfcsp3302相似度计算
//相似度计算 #include<iostream> #include<set>//不重复 #include<string> using namespace std; int main() {int n, m;cin >> n >> m;set<string>str1;set<string>str2;for(int i0;i<n;i){string s;cin>>s;for(int j0;…...
jEasyUI 创建 RSS 阅读器
jEasyUI 创建 RSS 阅读器 引言 随着互联网的快速发展,信息量呈爆炸式增长。为了方便用户快速获取所需信息,RSS 阅读器应运而生。jEasyUI 是一款流行的前端框架,具有丰富的组件和便捷的开发体验。本文将介绍如何使用 jEasyUI 创建一个功能齐…...
DeepSeek和Kimi在Neo4j中的表现
以下是2个最近爆火的人工智能工具, DeepSeek:DeepSeek Kimi: Kimi - 会推理解析,能深度思考的AI助手 1、提示词: 你能帮我生成一个知识图谱吗,等一下我会给你一篇文章,帮我从内容中提取关键要素,然后以N…...
【Java】TCP网络编程:从可靠传输到Socket实战
活动发起人小虚竹 想对你说: 这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!…...
windows 平台编译openssl
文章目录 准备环境安装perl安装NASM获取源码 源码编译配置编译 准备环境 安装perl 下载Perl 5.40.0.1 Portable zip strawberryperl 解压后设置系统环境变量 测试安装是否成功 perl --versionThis is perl 5, version 40, subversion 0 (v5.40.0) built for MSWin32-x64-m…...
剑指小米特斯拉:秦L EV上市11.98万起
3月23日,比亚迪王朝网推出全新中级纯电轿车秦L EV,价格区间为11.98万-13.98万元,瞬间火爆市场。 依托e平台3.0 Evo技术赋能,秦L EV以“国潮设计、智能座舱、越级空间、高效安全、高阶智驾”五大核心优势,直击年轻用户痛…...
避雷 :C语言中 scanf() 函数的错误❌使用!!!
1. 返回值说明 scanf函数会返回成功匹配并赋值的输入项个数,而不是返回输入的数据。 可以通过检查返回值数量来确认输入是否成功。若返回值与预期不符,就表明输入存在问题。 #include <stdio.h>int main() {int num;if (scanf("%d", …...
Godot读取json配置文件
概述 在Godot 4.3中读取JSON配置文件,可以通过以下步骤实现: 步骤说明 读取文件内容:使用FileAccess类打开并读取JSON文件。 解析JSON数据:使用JSON类解析读取到的文本内容。 错误处理:处理文件不存在或JSON格式错…...
Hadoop 3.x中的zookeeper和JournalNode的作用
在Hadoop 3.x版本中,ZooKeeper 和 JournalNode 的作用有所变化和增强,尤其是在HDFS高可用性(HA)架构和其他Hadoop组件的协作方面。下面是它们在Hadoop 3.x中的具体作用: ZooKeeper 继续在Hadoop 3.x中为集群提供协调服务,尤其是在HDFS的高可用性和YARN资源管理器的管理中…...
蓝桥杯高频考点——并查集(心血之作)
并查集 TA Can Do What & why learningwhatwhy 原理和结构路径压缩例题讲解题解solution 1(50分)solution 2(100分) 按秩(树高)合并按大小合并 TA Can Do What & why learning 从字面意思上来理解就是,合并&a…...
基于概率图模型的蛋白质功能预测
标题:基于概率图模型的蛋白质功能预测 内容:1.摘要 蛋白质功能预测在生物学研究中具有重要意义,能够帮助理解生命过程和疾病机制。本研究的目的是利用概率图模型进行蛋白质功能预测。方法上,收集了大量已知功能的蛋白质数据构建数据集,运用贝…...
Flutter 学习之旅 之 flutter 使用 connectivity_plus 进行网路状态监听(断网/网络恢复事件监听)
Flutter 学习之旅 之 flutter 使用 connectivity_plus 进行网路状态监听(断网/网络恢复事件监听) 目录 Flutter 学习之旅 之 flutter 使用 connectivity_plus 进行网路状态监听(断网/网络恢复事件监听) 一、简单介绍 二、conne…...
Redisson 分布式锁原理
加锁原理 # 如果锁不存在 if (redis.call(exists, KEYS[1]) 0) then# hash结构,锁名称为key,线程唯一标识为itemKey,itemValue为一个计数器。支持相同客户端线程可重入,每次加锁计数器1.redis.call(hincrby, KEYS[1], ARGV[2], 1);# 设置过期时间redis.call(pexpi…...
高频SQL50题 第四天 | 1251. 平均售价、620. 有趣的电影、1075. 项目员工 I、1633. 各赛事的用户注册率
知识点导览:日期大小比较;ifnull(字段,默认值)函数;取余操作;字符串比较like;逆序desc 1251. 平均售价 题目链接:https://leetcode.cn/problems/average-selling-price/description/?envTypest…...
【STM32】SPI通信外设硬件SPI读写W25Q64
SPI通信协议和W25Q64存储器芯片解读笔记: 【STM32】SPI通信协议&W25Q64Flash存储器芯片(学习笔记)-CSDN博客 SPI通信外设 SPI外设简介 STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能&…...
风暴潮、潮汐潮流模拟:ROMS模型如何精准预测海洋现象?
海洋数值模拟的崛起与 ROMS 的关键角色 🌊在海洋科学的浪潮中,海洋数值模拟正以迅猛之势崛起,成为科研与实际应用领域不可或缺的利器。ROMS(Regional Ocean Modeling System)作为其中的佼佼者,凭借其高效、…...
Spring JDBC Template与事务管理:基于XML与注解的实战指南
摘要 本文深入解析Spring JDBC Template与事务管理的核心技术,结合XML配置与注解方式两种主流方案,通过转账案例完整演示数据库操作与事务管理的最佳实践。文章涵盖JDBC Template的核心用法、事务配置语法、常见问题及性能优化建议,帮助开发…...
【Keil5-开发技巧】
Keil5-开发技巧 ■ Keil5利用AStyle插件格式化代码第一步:下载AStyle插件第二步:添加AStyle插件第三步:AStyle插件介绍■ 一键转UTF-8编码■ Keil5利用AStyle插件格式化代码 第一步:下载AStyle插件 AStyle下载 第二步:添加AStyle插件 解压后 astyle-3.6.7-x64 在重命…...
Uniapp:基于 Vue.js 的高效跨平台开发框架
Uniapp 介绍 Uniapp(全称:Universal Application)是一款基于 Vue.js 的跨平台开发框架,由 DCloud 公司开发和维护。它允许开发者使用一套代码同时构建运行在多个平台(如 iOS、Android、Web、小程序、快应用等…...
form 表单内容序列化成一个字符串
html <form id"form1" action"http://localhost:8080/xxx" method"post"> <p >关键字1: <input type "text" name"keyword1" /></p> <p >关键字2: <input t…...
电脑上不了网普通用户排除方法
1:首先通过电脑的运行/CMD/ipconfig /all 命令查看电脑的ip地址是否正常如图: 2:在命令行中运行:ping 127.0.0.1 如图则正常,否则要重新安装网卡驱动 程序。 3:用ping命令,ping一下同网段的电…...
【C#】WinForm自定义控件及窗体
前言 WinForm(Windows Forms)是Microsoft.NET框架中的技术,用于开发Windows桌面应用程序。它提供了一套丰富的控件和组件。通过拖放控件、编写事件处理程序等方式快速构建用户界面。 通过属性窗口定制这些控件的外观和行为。 通过数据绑定&am…...
基于虚拟知识图谱的语义化决策引擎
在数字化转型浪潮中,企业数据资产的价值释放面临两大挑战:海量异构数据的整合困局与业务-技术语义鸿沟。本文解析飞速创软灵燕智能体平台的创新解决方案——通过构建业务语义驱动的虚拟知识图谱系统,实现企业数据的智能认知与决策赋能。 一、…...
七天免登录 为什么不能用seesion,客户端的http请求自动携带cookei的机制(比较重要)涉及HTTP规范
如果是七天免登录,和session肯定没关系,因为session不能持久化,主要是客户端一旦关闭,seesion就失效了/// 所以必须是能持久化的,这就清晰了,要莫在的服务器保存,要摸在客户端设置 cook机制 1. 使用Cookie实现七天免登录 前端(登…...
HarmonyOS:@AnimatableExtend 装饰器自学指南
在最近的项目开发中,我遇到了需要实现复杂动画效果的需求。在探索解决方案的过程中,我发现了 AnimatableExtend 装饰器,它为实现动画效果提供了一种非常灵活且强大的方式。然而,在学习这个装饰器的过程中,我发现相关的…...
主流NoSQL数据库类型及选型分析
在数据库领域,不同类型的数据库针对不同场景设计,以下是四类主流NoSQL数据库的对比分析: 一、核心特性对比 键值数据库(Key-Value) 数据模型:简单键值对存储 特点:毫秒级读写、高并发、无固定…...
kubernetes|云原生|kubeadm-1.25.7集群单master+外部etcd集群+kubeadm-init+cri-docker文件形式快速部署
一、 前言和写作原因 本文做一个kubernetes集群部署记录,实在是部署的东西太多了,害怕忘记,kubernetes集群的部署又细节比较多,因此,在这里做一个尽量详细的记录 三个VMware虚拟机,IP分别为192.168.123.…...
