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等工具成为全球数亿人探索提高生产力和增强创造力的新方法。人们现在可以使用人工智能驱动…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
