《廖雪峰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.mzph.cn/news/864603.shtml

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

相关文章

无人机智能追踪反制系统技术详解

随着无人机技术的飞速发展,无人机在各个领域的应用越来越广泛。然而,无人机的无序飞行和非法使用也带来了一系列安全隐患和威胁。因此,无人机智能追踪反制系统应运而生,成为维护公共安全和防止无人机滥用的重要工具。本文将详细介…

Java Lambda语法介绍

目录 一、概述 二、Lambda语法的历史 2.1 Lambda名字的含义 2.2 Lambda的历史 三、Lambda语法的核心接口 3.1 Lambda的四大核心接口 3.1.1 概述 3.1.2 Consumer 接口 3.1.3 Supplier 接口 3.1.4 Function 接口,> 3.1.5 Predicate 接口 四、Lambda的引用 4.1 概…

python脚本获取深度相机的内参矩阵depth_intrinsics和color_intrinsics

注意将代码中的分辨率改为自己项目中的分辨率 pip3 install pyrealsense2 import pyrealsense2 as rsdef print_intrinsics(stream_profile):"""打印给定流的内参"""intrinsics stream_profile.as_video_stream_profile().get_intrinsics()pri…

2024hw 蓝队面试题合集

2024hw 蓝队面试题合集 2024hw 蓝队面试题合集面试题及答案使用过哪些设备,出现误报怎么办?安全设备会出现误报的原因有哪些?安全设备出现误报后,如何辨别真实威胁并采取有效措施?如何在 hw 中分析webshell 流量特征请讲一下应急响应流程溯源有哪些思路怎么防范邮件钓鱼针…

第7天:面向对象编程(OOP)

学习目标 理解面向对象编程的基本概念掌握类和对象的定义和使用学习属性和方法的定义和使用理解继承和多态的概念学习类的特殊方法 学习内容 1. 面向对象编程基本概念 面向对象编程(OOP)是一种编程范式,使用“对象”来设计应用程序和计算…

云海中的坚固灯塔:等保测评视角下的混合云安全策略与合规性深度剖析

在数字化浪潮的推动下,混合云架构以其独特的优势成为企业转型升级的得力助手。然而,随着数据资产向云端迁移,安全风险与合规挑战亦如影随形,成为企业前行的绊脚石。等保测评作为我国网络安全的一道坚实屏障,对于护航云…

编程高手的必备技能:C语言函数库构建——模块化编程,提升代码重用性

1.引言 在编程的世界里,C语言以其高效、灵活的特点,一直以来都备受编程高手的青睐。然而,随着软件规模的不断扩大,如何提高代码的可维护性、可读性和重用性,成为了摆在程序员面前的一大挑战。本文将深入探讨C语言函数…

化妆品安全问答:个人护理产品| FDA

「个人护理品」是否都作为化妆品监管?是一些药物还是「药妆」? 人们经常使用“个人护理产品”这个术语来指代我们在药店和百货商店的健康和美容部门常见的各种各样的物品。根据法律规定,这些产品可能属于许多不同的类别。 用于清洁或美容的…

Gartner发布软件供应链安全指南:软件供应链攻击造成的损失将从 2023 年的460亿美元上升到2031年的1380亿美元

软件供应链安全是一个关键的风险和合规性问题,但大多数组织都以分散的方式处理它。缺乏一个包罗万象的框架会遗留安全漏洞。通过实施三支柱框架,安全和风险管理领导者可以确保广泛的保护。 主要发现 对软件供应链的攻击给组织带来重大的安全、监管和运营…

【深度学习】pytorch训练中的一个大坑

使用的命令:iostat -x 5 可以看到 ssd的利用率已经满了。 之前在的数据集放在了 hdd上,训练结果特别慢。 所以我把它移动到了ssd上,然后训练参数用的 resume, 但是!!!!它把历史记住…

【C语言】19.预处理详解

文章目录 1.预定义符号2.#define定义常量3.#define定义宏4.带有副作用的宏参数5.宏替换的规则6.宏函数的对比7.#和##7.1 #运算符7.2 ## 运算符 8.命名约定9.#undef10.命令行定义11.条件编译12.头文件的包含12.1 头⽂件被包含的⽅式12.1.1 本地⽂件包含12.1.2 库⽂件包含 12.2 嵌…

学懂C#编程:常用高级技术——学会C#的高级特性 反射

反射(Reflection)是C#中的一项高级特性,它允许程序在运行时检查和操作程序集、模块、类型等元数据信息。通过反射,你可以在不知道类型信息的情况下,动态地创建对象、调用方法、访问属性等。 反射的基本概念 反射的核…

甲骨文首次将LLMs引入数据库,集成Llama 3和Mistral,和数据库高效对话

信息时代,数据为王。数据库作为数据存储&管理的一种方式,正在以势不可挡的趋势与AI结合。 前有OpenAI 收购了数据库初创公司 Rockset,引发广泛关注;Oracle公司(甲骨文)作为全球最大的信息管理软件及服…

农学VR虚拟仿真情景实训教学

在农学课堂上,VR虚拟仿真情景的应用正逐渐成为一种创新的教学方式。 随着科技的飞速发展,VR技术以其沉浸式体验特点,让学生仿佛置身于另一个世界。在农学课堂上,通过VR技术,学生可以身临其境地感受农田的广袤&#xf…

ArtTS系统能力-窗口管理的学习(3.2)

上篇回顾: ArtTS系统能力-通知的学习(3.1) 本篇内容: ArtTS系统能力-窗口管理的学习(3.2) 一、 知识储备 1. 基本概念 窗口渲染式能力:指对状态栏、导航栏等系统窗口进行控制,减…

计算机硬件(考点篇)试题

波特率: 在电子通信领域,波特(Baud)即调制速率,指的是有效数据讯号调制载波的速率,即单位时间内载波调制状态变化的次数。波特(Baud,单位符号:Bd)。 波特率…

PHP景区旅游多商户版微信小程序系统源码

解锁景区新玩法!​ 引言:一站式旅行新体验 厌倦了传统景区的单调游览?想要一次旅行就能体验多种风情?那么,“景区旅游多商户版”绝对是你的不二之选!这个创新模式将景区内多个商户资源整合,为…

【MySQL备份】Percona XtraBackup增量备份实战篇

目录 1.前言 2.准备工作 2.1.环境信息 2.2.创建备份目录 2.3.配置/etc/my.cnf文件 2.4.授予root用户BACKUP_ADMIN权限 3.增量备份 3.1.第一步:全量备份 3.2.第二步:增量备份 3.3.第三步:再次增量备份 4.准备备份 4.1.准备全量备…

windows自带的性能采集配置方法

1 计算机---右键---管理 2 性能--数据收集器几---用户自定义 3新建--输入程序名称 并在此页面选择--手动创建(高级) 4 下一步--勾选性能计数器---下一步 5 添加--找到process Processor Time User Time Handle Count ID Process Private Bytes…

爬虫逆向实战(42)-某巢登陆(AES、MD5、RSA、滑块验证码)

一、数据接口分析 主页地址:某巢 1、抓包 通过抓包可以发现在登录时,网站首先请求captcha/querySlideImage/来获取滑块验证码的图片,然后请求captcha/checkCode/接口来验证滑块验证码。滑块验证码校验成功后,请求noshiro/getPu…