Java 入门 - 语法基础

news2024/11/28 6:45:24

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
复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/470933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BFS算法专题

BFS算法专题 框架篇LeetCode 111. 二叉树的最小深度解题思路代码实现 LeetCode 752. 打开转盘锁解题思路代码实现 LeetCode 773. 滑动谜题解题思路代码实现 总结 不要纠结,干就完事了,熟练度很重要!!!多练习&#xff0…

Vivado约束添加方法:一文全面解析IO和时序约束

FPGA开发离不开IO约束和时序约束,IO约束用于确定输入/输出端口的物理端口和电气特性,与芯片和电路设计有关。而时序约束则用于设定FPGA设计中的时序特性,以确保系统能够在预期时钟频率下正常运行。本文将介绍vivado中常见的设置约束的方法。 …

mysql 如何避免索引失效

案例演示 建表及初始化数据 CREATE TABLE staffs (id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(24) NOT NULL DEFAULT ,age INT NOT NULL DEFAULT 0,pos VARCHAR(20) NOT NULL DEFAULT ,#职位add_time TIMESTAMP NOT NULL DEFAULT CURREN…

二维码在设备点维一体化管理中的应用

随着科技发展,设备点维一体化管理体系应运而生,该管理体系的出现让设备维护保养变得更加高效精细化。 设备点维一体化管理体系以设备点检和维护保养为基础,通过日常、专业及精密点检,对点检测得的数据和设备给油脂保养情况进行统…

一个开源、免费在线数据建模、元数据管理平台,简单易用

一、开源项目简介 ERD Online 是一个开源、免费在线数据建模、元数据管理平台。提供简单易用的元数据设计、关系图设计、SQL查询等功能,辅以版本、导入、导出、数据源、SQL解析、审计、团队协作等功能、方便我们快速、安全的管理数据库中的元数据。 二、开源协议 …

全国各省份影像下载地址(11级别)

安徽省https://pan.baidu.com/s/1fMuWhVZFvSH1UlCGU1bPpA?pwdeasy澳门特别行政区https://pan.baidu.com/s/1aU2D4o2bfeHTJTb6AkUtVA?pwdeasy北京市https://pan.baidu.com/s/1eaNzAWm1pUx_rjhD_wHHhA?pwdeasy福建省百度网盘 请输入提取码甘肃省https://pan.baidu.com/s/1mAqf…

【Tools系列】IDA远程调试Linux文件

Date: 2023.4.28 文章目录 1、工具安装2、IDA+linux_server参考1、工具安装 IDA Pro 7.2 2、IDA+linux_server (1)进入到IDA的安装目录,找到文件夹/dbgsrv,其中有两个文件linux_server和linux_server64,分别为32位的服务端和64位的服务端,可根据调试目标进行选择。并将…

RocketMQ第二节(安装和模块详解)

目录 1:RocketMQ安装 1.1:下载安装包解压 1.2:修改运行配置 1.3:运行RocketMQ 1.3.1:启动NameServer 1.3.2:启动Broker 1.4:消息收发 1.5:服务关闭 2:RocketMQ模…

八部门联合推动IPv6创新发展 知道创宇助力IPv6快速安全改造

近日,工业和信息化部、中央网信办、国家发展改革委、教育部、交通运输部、人民银行、国务院国资委、国家能源局等八部门联合印发《关于推进IPv6技术演进和应用创新发展的实施意见》(以下简称“《实施意见》”),提出到2025年底&…

换个花样玩C++(3)const_cast不是一行代码这么简单

我先不说const_cast的事情,还是回到我们之前遇到的一个问题,先看代码 示例1 #include <iostream> int main() {const int a = 1;int* p = (int*)(&a);*p = 100; std::cout << a; } 这段代码里,本来想通过指针p里修改a的值,vs调试看下来a的值在*p=100;这…

Elasticsearch --- 简介、安装

一、简介 1.1、elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 例如&#xff1a; 在GitHub搜索代码 在电商网站搜索商品 在百度搜索答案 1.2、ELK技术栈 elas…

Linux安装helm

前言 运行环境&#xff1a;CentOS7.9 官方参考文档&#xff1a;官方文档 文章末尾附有一键安装脚本 下载安装包 github下载对应版本的安装包&#xff0c;下载地址 进入对应版本的下载页面&#xff0c;这里以v3.11.3为例 选择对应系统的安装包&#xff0c;这里以linux为例 …

WhatsApp CRM:通过 CRM WhatsApp 集成向客户发送消息

WhatsApp CRM&#xff1a;通过 CRM WhatsApp 集成向客户发送消息 你是否在寻找一个支持WhatsApp整合的CRM&#xff1f;或者&#xff0c;你想将WhatsApp与你当前的CRM整合&#xff1f;这篇文章将回答你所有的问题。我们将首先了解什么是WhatsApp CRM&#xff0c;以及你需要知道…

【Python】丘比特之箭,一箭穿心,快去发给你心仪的人叭~

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,YOLO领域博主爱笑的男孩。擅长深度学习,活动,YOLO,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个人简…

20230428 -栈与队列1 | 232. 用栈实现队列、225. 用队列实现栈、Queue和Deque异同介绍

1、232. 用栈实现队列 class MyQueue {//整体实现思路&#xff1a;队列是先进先出&#xff0c;栈是先进后出。使用两个栈&#xff0c;一个栈A负责进&#xff0c;一个栈B负责接收栈A数据&#xff0c;然后出出&#xff0c;队列&#xff1a;A->B>C 栈A&#xff1a;A->B&g…

一分钟教你玩转组合图表

在日常工作中&#xff0c;有时候单一的图表类型无法满足多维度的数据展示&#xff0c;这时候就要考虑使用组合图表。 什么是组合图表呢&#xff1f; 就是将两种及两种以上的图表类型组合起来绘制在一个图表上。 下面我们通过经典的柱线组合图来手把手教会你如何制作组合图表。 …

ChatGLM LoRA微调实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Kestrel封装在Winform中

Kestrel封装在Winform中 背景思路方法1方法2方法3&#xff08;本文使用的方法&#xff09; 实现在winform程序中引入几个nuget包新建一个Startup类&#xff08;叫什么名字都行&#xff09;修改Program文件创建controller 运行效果(打开浏览器&#xff0c;输入如下地址&#xff…

【高危】Apache Superset <2.1.0 认证绕过漏洞(POC)(CVE-2023-27524)

漏洞描述 Apache Superset 是一个开源的数据可视化和业务智能平台&#xff0c;可用于数据探索分析和数据可视化。 Apache Superset 受影响版本在使用默认的secret_key时&#xff0c;攻击者可通过默认的secret_key为任意用户生成有效的会话令牌&#xff0c;进而绕过验证造成信…

千耘导航让普通棉农享受到科技红利

孟师傅&#xff0c;新疆阿克苏一名普通的棉花种植户&#xff0c;从事农业20年&#xff0c;开拖拉机也有10多年&#xff0c;之前听过农机自动驾驶&#xff0c;但由于这里通信网络信号不太好&#xff0c;身边朋友使用农机导航效果不是特别理想&#xff0c;因此一直没享受到科技带…