Java 入门 - 语法基础
hello world
public class Hello {public static void main(String[] args) {System.out.println("hello world");}
}
复制代码
- public: 是关键字;表示公开的
- class: 是关键字;用来定义类
- Hello: 是类名;大小写敏感;命名一般为大驼峰格式
- static: 是关键字;表示静态的
- void: 是关键字;表示方法的返回类型为 void
- main 方法: Java 程序的入口方法;是可执行的代码块
- 分号: Java 的每一行语句必须必须以分号结尾
注意:一个 Java 源码只能定义一个
public
类型的 class,并且 class 名称和文件名保持一致
注释
// 单行注释
复制代码
/*
多行注释
多行注释
*/
复制代码
/*** 可以用来自动创建文档的多行注释, 需要写在类和方法的定义处* * @auther pany*/
复制代码
变量
- Java 变量分为两种:基本类型的变量和引用类型的变量
- 必须先定义后使用
- 不能重复定义
- 如果不写初始值,就相当于给它指定了默认值
基本类型
- 整数类型:byte,short,int,long
- 浮点数类型:float,double
- 字符类型:char
- 布尔类型:boolean
不同基础类型占用字节数:
语法:
int i = 100;
long l = 100L; // long 型的结尾需要加 L
float f = 3.14f; // float 型的结尾需要加 f
double d = 3.14;
boolean b = true;
char c = '中';
复制代码
引用类型
除了上述基本类型,其他的都是引用类型,比如字符串
String s = "hello";
复制代码
常量
加上 final 修饰符,这个变量就变成了常量:
final double PI = 3.14; // PI 是一个常量
复制代码
var 关键字
有些时候,类型的名字太长,写起来比较麻烦。例如:
StringBuilder sb = new StringBuilder();
复制代码
这个时候,如果想省略变量类型,可以使用 var 关键字:
var sb = new StringBuilder(); // 编译器会自动推断类型
复制代码
整数运算
除法 & 溢出
int x = 12345 / 67; // 等于 184,因为只取整数部分
复制代码
int y = 12345 % 67; // 等于 17,因为 12345 ÷ 67 的余数是 17
复制代码
注意:整数的除法对于除数为 0 时运行时将报错,但编译不会报错
溢出:整数由于存在范围限制,如果计算结果超出了范围,就会产生溢出,而溢出不会出错,却会得到一个奇怪的结果
类型转化
自动转化(如果参与运算的两个数类型不一致,那么计算结果为较大类型的整型)
short s = 10;
int i = 10;
int x = s + i; // s 自动转型为 int
short y = s + i; // 编译错误
复制代码
强制转化(将大范围的整数转型为小范围的整数)
int i = 12345;
short s = (short) i; // 12345
复制代码
浮点数运算
除法 & 溢出
整数运算在除数为 0
时会报错,而浮点数运算在除数为 0
时不会报错,但会返回几个特殊值:
double d1 = 0.0 / 0; // NaN; 表示 Not a Number
double d2 = 1.0 / 0; // Infinity; 表示无穷大
double d3 = -1.0 / 0; // -Infinity; 表示负无穷大
复制代码
类型提升
如果参与运算的两个数其中一个是整型,那么整型可以自动提升到浮点型:
int i = 5;
double d = 1.2 + 24.0 / n; // 6.0
复制代码
注意,在一个复杂的四则运算中,两个整数的运算不会出现自动提升的情况:
double d = 1.2 + 24 / 5; // 5.2
复制代码
原因是编译器计算 24 / 5 这个子表达式时,按两个整数进行运算
强制转化
可以将浮点数强制转型为整数。在转型时,浮点数的小数部分会被丢掉 如果转型后超过了整型能表示的最大范围,将返回整型的最大值
int n1 = (int) 12.7; // 12
int n2 = (int) -12.7; // -12
int n3 = (int) (12.7 + 0.5); // 13; 如果要四舍五入就可以采用该 +0.5 的方式
int n3 = (int) 1.2e20; // 2147483647; 最大值
复制代码
字符 & 字符串
字符
一个 char
保存一个 Unicode 字符
char c = 'A';
复制代码
要显示一个字符的Unicode编码,只需将 char
类型直接赋值给 int
类型即可:
int i = 'A'; // 字母 'A' 的 Unicodde 编码是 65
复制代码
还可以直接用转义字符 \u
+ Unicode 编码来表示一个字符:
// 注意是十六进制
char c = '\u0041'; // 'A'; 因为十六进制 0041 = 十进制 65
复制代码
字符串
和 char
基本类型不同,字符串类型 String
是引用类型,并且是双引号来表示
String s = "abc\"xyz"; // 包含 7 个字符: a, b, c, ", x, y, z
复制代码
其中 \
是转义字符
连接字符串
如果用 + 连接字符串和其他数据类型,会将其他数据类型先自动转型为字符串,再连接
int age = 24;
String s = "age is " + age; // age is 24
复制代码
多行字符串
如果我们要表示多行字符串,使用 + 号连接会非常不方便
String s = "第一行 \n"+ "第二行 \n"+ "第三行";
复制代码
所以用 """xxx"""
表示多行字符串
String s = """第一行第二行第三行""";
复制代码
注意:多行字符串前面共同的空格会被去掉。将上面每行代码前端的共同空格去掉后相当于:
"""
第一行第二行
第三行
"""
复制代码
空值 null
引用类型的变量可以指向一个空值 null
,它表示不存在,即该变量不指向任何对象
String s1 = null; // s1 是 null
String s2; // 没有赋初值值,s2 默认值也是 null
复制代码
转义字符
常见的转义字符包括:
\"
表示字符"
\'
表示字符'
\\
表示字符 ``\n
表示换行符\r
表示回车符\t
表示 Tab\u####
表示一个 Unicode 编码的字符
数组
特点
- 数组所有元素初始化为默认值,整型都是
0
,浮点型是0.0
,布尔型是false
- 数组一旦创建后,大小就不可改变
- 是引用类型
一维
语法: 类型[]
// 定义
int[] ar1 = new int[2];
// 赋值
ar1[0] = 0;
ar1[1] = 1;// 也可以定义时指定初始值
int[] ar2 = new int[] { 0, 1 };// 简化
int[] ar3 = { 0, 1 };
复制代码
二维
int[][] as = {{ 1, 2, 3 },{ 4, 5, 6 },{ 7, 8, 9 }
}
复制代码
打印数组
Arrays.deepToString(as) // 当然也可以用 for 循环
复制代码
输出
System.out.print("A"); // 输出,但不换行
复制代码
System.out.println("A"); // 输出并换行
复制代码
double d = 3.1415926;
System.out.printf("%.2f\n", d); // 格式化输出,显示两位小数
复制代码
判断是否相等
Java 中判断值类型的变量是否相等可以使用 ==
运算符。但是,判断引用类型的变量是否相等,==
表示 引用是否相等
,或者说,是否指向同一个对象
要判断引用类型的变量内容是否相等,必须使用 equals()
方法
String s1 = "hello";
String s2 = "HELLO".toLowerCase(); // "hello"
boolean b1 = s1 == s2;
boolean b2 = s1.equals(s2);
System.out.println(b1); // false
System.out.println(b2); // true
复制代码
相关文章:

Java 入门 - 语法基础
hello world public class Hello {public static void main(String[] args) {System.out.println("hello world");} } 复制代码 public: 是关键字;表示公开的class: 是关键字;用来定义类Hello: 是类名;大小写敏感;命名…...

Java线程池及拒绝策略详解
前文提到线程的使用以及线程间通信方式,通常情况下我们通过new Thread或者new Runnable创建线程,这种情况下,需要开发者手动管理线程的创建和回收,线程对象没有复用,大量的线程对象创建与销毁会引起频繁GC,…...

GitLABJenkins
GitLAB & Jenkins 目录 实践:基于Jenkins提交流水线(测试成功)-2023.4.25 目的:掌握通过触发器将GitLab和Jenkins集成,实现提交流水线。 1、触发Jenkins构建 安装Generic Webhook Trigger插件 重启后,进入一个Pipeline项目设…...

互联网摸鱼日报(2023-04-26)
互联网摸鱼日报(2023-04-26) InfoQ 热门话题 神州数码:抢抓云原生发展机遇,共建共治共享 OpenNJet 应用引擎开源生态 《产业数字人才研究与发展报告(2023)》 如何写出CPU友好的代码,百倍提升…...

石化企业数字化防爆融合通信解决方案
项目背景 石化工业是我国国民经济和社会发展的基础性、战略性产业,其发展和壮大受到了党和国家的高度重视。随着石化企业厂区规模的不断扩大以及技术的快速发展,现有石化企业专网通信系统建设相对滞后,缺乏结合人员管理、安全生产、安全通信…...

NTT学习笔记(快速数论变换)
一些概念 欧拉函数 ϕ ( n ) \phi(n) ϕ(n) 欧拉函数简介 阶 若 g g g和 n n n互质,则令 g x % n 1 g^x\%n1 gx%n1的最小正整数 x x x称为 g g g模 n n n的阶。 原根 对于互质的两个正整数 g g g和 n n n,如果 g g g模 n n n的阶为 ϕ ( n ) \phi…...

Android类似微信首页的页面开发教程(Kotlin)二
前提条件 安装并配置好Android Studio Android Studio Electric Eel | 2022.1.1 Patch 2 Build #AI-221.6008.13.2211.9619390, built on February 17, 2023 Runtime version: 11.0.150-b2043.56-9505619 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 11 …...

PAt A1015 Reversible Primes
1015 Reversible Primes 分数 20 作者 CHEN, Yue 单位 浙江大学 A reversible prime in any number system is a prime whose "reverse" in that number system is also a prime. For example in the decimal system 73 is a reversible prime because its rever…...

解决Lemuroid识别不到蓝牙键盘的问题
Android系统基于libretro的全能游戏模拟器,目前有RetroArch,Kodi,Lemuroid。 而且这三个都是开源免费的APP。 Lemuroid相对前面两个功能比较简陋。也不能自己下载核心。但代码也是最少的。 在使用Lemuroid的时候,发现它不能检测…...

SpringBoot 使用 Sa-Token 完成权限认证
一、设计思路 所谓权限认证,核心逻辑就是判断一个账号是否拥有指定权限: 有,就让你通过。没有?那么禁止访问! 深入到底层数据中,就是每个账号都会拥有一个权限码集合,框架来校验这个集合中是…...

Spring核心与设计思想、创建与使用
文章目录 一、Spring是什么二、为什么要学习框架三、IoC和DI(一)IoC1. 认识IoC2. Spring的核心功能 (二)DI 四、Spring项目的创建(一)使用 Maven 方式创建一个 Spring 项目 五、Spring项目的使用࿰…...

mysql 备份 还原
1:备份 执行命令方案1: /usr/local/mysql/bin/mysqldump -uX -pX -h 127.0.0.1 --set-gtid-purgedOFF --skip-extended-insert --add-drop-table --add-locks --create-options --disable-keys --lock-tables --quick --set-charset -e --max_allowed_packet16777216 --net_b…...

每日学术速递4.26
CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.AutoNeRF: Training Implicit Scene Representations with Autonomous Agents 标题:AutoNeRF:使用自主代理训练隐式场景表示 作者:Pierre Marz…...

RabbitMQ使用StringRedisTemplate-防止重复消费
造成重复消费的原因: MQ向消费者推送message,消费者向MQ返回ack,告知所推送的消息消费成功。但是由于网络波动等原因,可能造成消费者向MQ返回的ack丢失。MQ长时间(一分钟)收不到ack,于是会向消…...

临沂大学张继群寄语
目录 寄语 1、不能有不良睹好 2、坚毅的个性和勤奋的品质 3、会存钱...

线程学习笔记
1:Thread 线程的生命周期控制 2:Runnable 可执行的任务和程序 3:Callable 执行程序后返回结果 4:Future 收集程序返回结果 5:Executor 线程池 6:ForkJoin 默认线程池 每个线程有工作队列 工作窃取 7:RunnableFuture FutureTask 实现 Runnable 和 Future 执…...

代码随想录算法训练营第四十二天|01背包问题,你该了解这些!、01背包问题,你该了解这些! 滚动数组 、416. 分割等和子集
文章目录 01背包问题,你该了解这些!01背包问题,你该了解这些! 滚动数组416. 分割等和子集 01背包问题,你该了解这些! 题目链接:代码随想录 二维数组解决0-1背包问题 解题思路: 1.dp…...

结构体指针、数组指针和结构体数组指针
结构体指针 首先让我们定义结构体: struct stu { char name[20]; long number; float score[4]; }; 再定义指向结构体类型变量的指针变量: struct stu *student; /*定义结构体类型指针*/ student malloc(sizeof(struct stu)); /*为指针变量分…...

项目架构一些注意点
考虑系统的 稳定性 一、微服务的稳定性 1、如何解决那些不稳定的因素/问题?也是常说的如何容错。 2、一个系统的高可用取决于它本身和其强依赖的组件的高可用 3、消除单点 保活机制 健康检查 注册中心如何保障稳定性 注册中心集群 微服务本身对注册信息的本地持…...

Forefront GPT-4免费版:开启无限畅聊时代,乐享人工智能快感,无限制“白嫖”,还能和N多角色一起聊天?赶紧注册,再过些时间估计就要收费了
目录 前言注册登录方式应用体验聊天体验绘图体验 “是打算先免费后收费吗?”建议其它资料下载 前言 近期,人工智能技术迎来重大飞跃,OpenAI的ChatGPT等工具成为全球数亿人探索提高生产力和增强创造力的新方法。人们现在可以使用人工智能驱动…...

深入浅出 Compose Compiler(1) Kotlin Compiler KCP
前言 Compose 的语法简洁、代码效率非常高,这主要得益于 Compose Compiler 的一系列编译期魔法,帮开发者生成了很多样板代码。但编译期插桩也阻碍了我们对于 Compose 运行原理的认知,想要真正读懂 Compose 就必须先了解它的 Compiler。本系列…...

BatchNormalization和LayerNormalization的理解、适用范围、PyTorch代码示例
文章目录 为什么要NormalizationBatchNormLayerNormtorch代码示例 学习神经网络归一化时,文章形形色色,但没找到适合小白通俗易懂且全面的。学习过后,特此记录。 为什么要Normalization 当输入数据量级极大或极小时,为保证输出数…...

大数据 | 实验二:文档倒排索引算法实现
文章目录 📚实验目的📚实验平台📚实验内容🐇在本地编写程序和调试🥕代码框架思路🥕代码实现 🐇在集群上提交作业并执行🥕在集群上提交作业并执行,同本地执行相比即需修改…...

Java文档注释-JavaDoc标签
标签含义author指定作者{code}使用代码字体以原样显示信息,不处理HTML样式deprecated指定程序元素已经过时{docRoot}指定当前文档的根目录路径exception标识由方法或构造函数抛出的异常{inheritDoc}从直接超类中继承注释{link}插入指向另外一个主题的内联链接{linkp…...

黑盒测试过程中【测试方法】详解5-输入域,输出域,猜错法
在黑盒测试过程中,有9种常用的方法:1.等价类划分 2.边界值分析 3.判定表法 4.正交实验法 5.流程图分析 6.因果图法 7.输入域覆盖法 8.输出域覆盖法 9.猜错法 黑盒测试过程中【测试方法】讲解1-等价类,边界值,判定表_朝一…...

Python学习之sh(shell脚本)在Python中的使用
文章目录 前言一、sh是什么?二、使用步骤1.安装2.使用示例3.使用sh执行命令4.关键字参数5.查找命令6.Baking参数 前言 本文章向大家介绍[Python库]分析一个python库–sh(系统调用),主要内容包括其使用实例、应用技巧、基本知识点…...

追求卓越:编写高质量代码的方法和技巧
本文讨论了编写高质量代码的重要性,并详细介绍了高质量代码的特征、编程实践技巧和软件工程方法论。通过遵循这些原则和实践,程序员可以编写出更稳定、可维护和可扩展的代码。 一、 前言 写出高质量代码是每个程序员的追求和目标。高质量的代码可以使程…...

MATLAB算法实战应用案例精讲-【人工智能】机器视觉(概念篇)(最终篇)
目录 前言 几个高频面试题目 如何评价一个光源的好坏? 如何依靠光源增强图像对比度?...

【老王读SpringMVC-3】根据 url 是如何找到 controller method 的?
前面分析了 request 与 handler method 映射关系的注册,现在再来分析一下 SpringMVC 是如何根据 request 来获取对应的 handler method 的? 可能有人会说,既然已经将 request 与 handler method 映射关系注册保存在了 AbstractHandlerMethodMapping.Ma…...

人机交互到艺术设计及玫瑰花绘制实例
Python库之图形用户界面 Riverbank Computing | Introduction Welcome to wxPython! | wxPython Overview — PyGObject Python库之游戏开发 https://www.pygame.org/news Panda3D | Open Source Framework for 3D Rendering & Games python.cocos2d.org Python库之…...