《廖雪峰Java教程》——Java快速入门

参考资料:

  • Java快速入门 - 廖雪峰的官方网站 (liaoxuefeng.com)

Java简介

Java 介于编译型语言和解释型语言之间。Java 是将代码编译成一种“字节码”,然后,针对不同平台编写虚拟机,不同平台的虚拟机负责加载字节码并执行,这样就实现了“一次编写,到处运行”的效果。

第一个Java程序

一个简单的 Java 源代码:

public class Hello {public static void main(String[] args) {System.out.println("Hello, world!");}
}

Java规定,某个类定义的 public static void main(String[] args) 是Java程序的固定入口方法。当我们把代码保存为文件时,文件名必须是 Hello.java

Java程序基础

Java程序基本结构

/*** 可以用来自动创建文档的注释*/
public class Hello {public static void main(String[] args) {// 向屏幕输出文本:System.out.println("Hello, world!");/* 多行注释开始注释内容注释结束 */}
} // class定义结束
  • 类名推荐使用大驼峰命名法,方法名推荐使用小驼峰命名法;
  • Java 入口程序规定的方法必须是静态方法,方法名必须为 main,括号内的参数必须是 String 数组。

变量和数据类型

Java 的数据类型可以分为基本类型引用类型,基本类型包括:

  • 整型:byteshortintlong
  • 浮点型:floatdouble
  • 字符型:char
  • 布尔型:boolean ,只有 truefalse 两种取值,占存储空间大小没有规定,通常用 4 字节整型表示。

引用类型变量类似 C++ 的指针,存储地址,null 表示空值。

常量用 final 修饰,常量名通常全部大写;var 关键字可以让编译器自动推断变量类型,类似 C++ 的 auto

final double PI = 3.14;
var sb = new StringBuilder();

整数运算

若参与运算的两整型类型不一致,则计算结果为较大类型的整型:

short s = 1234;
int i = 123456;
int x = s + i; // s自动转型为int
short y = s + i; // 编译错误!

浮点数运算

整数除以 0 会报错;浮点数除以 0 会返回特殊值:

double d1 = 0.0 / 0; // NaN
double d2 = 1.0 / 0; // Infinity
double d3 = -1.0 / 0; // -Infinity

浮点型强制转换为整型时,只保留整数部分。如果转型后超过整型的最大表示范围,则返回整型的最大值

布尔运算

boolean b = false;
boolean result = b && (5 / 0 > 0);	// 由于短路运算,整型除以0不会报错

字符和字符串

Java 使用 Unicode 表示字符,占 2 个字节。

字符串类型 String 是引用类型,且不可变

String s1 = "hello";
String s2 = s1;
s1 = "world";	// 此时s2的内容依然为hello

上述代码中,编译器首先创建字符串 hello ,然后让变量 s1 指向它,接着让变量 s2 也指向它;然后,编译器创建字符串 world ,让 s1 指向它,此时 s2 仍然指向原来的 hello

数组类型

数组大小不可变,可以通过索引访问数组元素,超出范围则在运行时报错。

流程控制

输入输出

输出

System.out.printSystem.out.printlnSystem.out.printf

输入

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in); // 创建Scanner对象System.out.print("Input your name: "); // 打印提示String name = scanner.nextLine(); // 读取一行输入并获取字符串System.out.print("Input your age: "); // 打印提示int age = scanner.nextInt(); // 读取一行输入并获取整数System.out.printf("Hi, %s, you are %d\n", name, age); // 格式化输出}
}

if判断

和 C++ 没区别。

switch多重选择

普通 switch 表达式和 C++ 基本相同,区别是变量类型可以为 String

Java 12 提供了一种新的 switch 表达式,该形式只会执行一个分支,不需要 break ,且可以使用返回值:

public class Main {public static void main(String[] args) {String fruit = "orange";int opt = switch (fruit) {case "apple" -> 1;case "pear", "mango" -> 2;default -> {int code = fruit.hashCode();yield code; // switch语句返回值}};System.out.println("opt = " + opt);}
}

While循环

和 C++ 没区别。

do While循环

和 C++ 没区别。

for循环

和 C++ 没区别。

breakcontinue

和 C++ 没区别。

数组操作

遍历数组

便捷方法:使用 Array.toString()

int[] ns = { 1, 1, 2, 3, 5, 8 };
System.out.println(Arrays.toString(ns));
// 输出为 [1,1,2,3,5,8]

数组排序

使用 Array.sort()

int[] ns = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };
Arrays.sort(ns);

多维数组

数组的数组,数组长度不要求相同。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第 27 篇 : 搭建maven私服nexus

官网文档 1. 下载应该很慢, 最好是能翻墙 nexus-3.69.0-02-java8-unix.tar.gz 2. 上传到/usr/local/src, 解压及重命名 tar -zxvf nexus-3.69.0-02-java8-unix.tar.gz rm -rf nexus-3.69.0-02-java8-unix.tar.gz mv nexus-3.69.0-02 nexus ls3. 修改配置 cd /usr/local/sr…

2024最新版Redis常见面试题包含详细讲解

Redis适用于哪些场景? 缓存分布式锁降级限流消息队列延迟消息队 说一说缓存穿透 缓存穿透的概念 用户频繁的发起恶意请求查询缓存中和数据库中都不存在的数据,查询积累到一定量级导致数据库压力过大甚至宕机。 缓存穿透的原因 比如正常情况下用户发…

生命在于学习——Python人工智能原理(3.1.2)

一、概率基本知识 1.3 常见概型 1.3.1 古典概型 定义1 古典概型 若随机事件E满足如下两个条件: (1)样本空间S中只有有限个样本点。 (2)样本空间S中每个样本点发生都是等可能的。 这样的随机试验称为古典概型。 P(A)…

暑期大数据人工智能学习-企业项目试岗实训开营

暑期企业项目-试岗实训活动全面开启啦 跟张良均老师学大数据人工智能 不仅可以提供实习证明,有需要话也可以提供实习鉴定报告 √54个热门案例拆解 √40项目实战课程 √27个项目可选 √4个项目方向

企业本地大模型用Ollama+Open WebUI+Stable Diffusion可视化问答及画图

最近在尝试搭建公司内部用户的大模型,可视化回答,并让它能画图出来, 主要包括四块: Ollama 管理和下载各个模型的工具Open WebUI 友好的对话界面Stable Diffusion 绘图工具Docker 部署在容器里,提高效率 以上运行环境…

to_json 出现乱码的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

基于MIMO系统的预编码matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 最小均方误差(MMSE)准则 4.2 量化准则 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 …

让围绕数据库构建大模型应用更简单方便--DB-GPT

DB-GPT的目的是构建大模型领域的基础设施,通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单,更方便。 1 处理流程 DB-GPT系…

使用supportFragmentManager管理多个fragment切换

android studio创建的项目就没有一个简单点的框架,生成的代码都是繁琐而复杂,并且不实用。 国内的页面一般都是TAB页面的比较多,老外更喜欢侧边菜单。 如果我们使用一个activity来创建程序,来用占位符管理多个fragment切换&…

网络连接之队头阻塞!!!

一、什么是队头阻塞 队头阻塞,在网络模型中简单理解就是,对于队列型的请求模型,如HTTP的请求-响应模型、TCP的ACK确认机制,都依赖得到一个具体的响应包,如果收不到这个响应包,那下一个请求就不能发&#x…

如何高效安全的开展HPC数据传输,保护数据安全?

高性能计算(HPC)在多个行业和领域中都有广泛的应用,像科学研究机构、芯片IC设计企业、金融、生物制药、能源、航天航空等。HPC(高性能计算)环境中的数据传输是一个关键环节,它涉及到将数据快速、安全地在不…

hive的表操作

常用的hive命令 切换数据库use test;查询表的建表信息show create table 数据库名称.表名;查看表的类型信息desc formatted 数据库名称.表名; 删除内部表 drop table 数据库名称.表名; 先启动hdfs ,mysql , hiveservice2,beeline CREATE [EX…

Jenkins 创建流水线任务

Jenkins是一个流行的持续集成(Continuous Integration,CI)工具。 Jenkins 创建任务 选择“流水线”类型,该类型的优点是定制化程度非常高 (可选)添加“参数化构建” 配置仓库选项(ssh连接、分支)和凭据…

vue 中使用element-ui实现锚点定位表单

效果图&#xff1a; 代码&#xff1a; html代码&#xff1a; <div class"content-left"><el-tabs :tab-position"left" tab-click"goAnchor"><el-tab-pane v-for"(item,index) in anchorNameList"v-anchor-scroll:ke…

《C++20设计模式》适配器模式经验分享

文章目录 一、前言二、对于接口的讨论三、实现1、对象适配器1.1 UML类图1.2 实现 2、类适配器 四、最后 一、前言 从适配器模式开始就是类的组合聚合&#xff0c;类与类之间结构性的问题了。 适配器模式解决的问题&#xff1a; 适配器模式能够在不破坏现有系统结构的情况下&a…

问题集锦1

01.inner中使用JwtTokenUtil.getUserCode() 前端调用上传&#xff08;java&#xff09;&#xff0c;上传使用加购 Overridepublic Boolean insertShoppingCart(InsertShoppingCartParamsDto dto) {// 通过userCode,itemCode和supplierCode来判断当前加购人添加到购物车的商品是…

前端FCP指标优化

优化前 第三方依赖按需引入之后&#xff0c;打包的总体积减小到初始值的55%&#xff0c;但是依然存在很大的js文件&#xff0c;需要继续优化 chunk-vendors.js进行分包之后 截图 compression-webpack-plugin压缩之后 截图

使用Nginx反向代理KKFileView遇到问题

使用KKFileView 4.0 以上版本 在KKFileView官网上&#xff0c;关于使用Nginx代理&#xff0c;建议配置如下 一、修改Nacos 在Nginx的conf文件夹中修改 nginx.conf ,新加 红框内的IP地址为代理服务器地址&#xff08;即安装KKFileView的服务器地址&#xff09; 二、修改KKFil…

【Dison夏令营 Day 07】用 Python 和 Rich 制作 Wordle克隆(下篇)

在大流行期间&#xff0c;Wordle 在 Twitter 上还算比较流行的一款基于网络的益智游戏&#xff0c;要求玩家每天在六次或更短时间内猜出一个新的五个字母的单词&#xff0c;每个人得到的单词都是一样的。 在本教程中&#xff0c;你将在终端上创建自己的 Wordle 克隆。自 2021 …

ViewBinding的使用(因为kotlin-android-extensions插件的淘汰)

书籍&#xff1a; 《第一行代码 Android》第三版 开发环境&#xff1a; Android Studio Jellyfish | 2023.3.1 问题&#xff1a; 3.2.4在Activity中使用Toast章节中使用到了kotlin-android-extensions插件,但是该插件已经淘汰,根据网上了解,目前使用了新的技术VewBinding替…