(一)Java 基础语法

目录

一. 前言

二. Hello World

三. Java 语法

3.1. 基本语法

3.2. Java 标识符

3.3. Java 修饰符

3.4. Java 变量

3.5. Java 数组

3.6. Java 枚举

3.7. Java 关键字

3.8. Java 注释

3.9. Java 空行

3.10. Java 继承

3.11. Java 接口(interface)

四. 课后习题


一. 前言

   在学习 Java 之前,有必要对 Java 有一个基本的认识和了解,可以参见《探秘 JAVA 诞生之路,引领编程人生的宏伟著作》,此文会对 Java 从诞生到发展到成熟有一个非常细致地介绍。接下来在进行编程之前,需要准备下开发环境的搭建,可以参见《JDK 环境变量设置》,配置好环境变量后,选择你中意的开发工具如 eclipse、idea 就可以进入愉快地编程世界了。

    一个 Java 程序可以认为是一系列对象的集合,万事万物皆对象,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念:
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类:类是一个模板,它描述一类对象的行为和状态。
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。

二. Hello World

    我们开始写自己的第一个 Java 程序,下面看一个简单的 Java 示例代码,它将打印字符串 Hello World:

public class MyFirstJava {/* * 第一个Java程序,它将打印字符串 Hello World*/public static void main(String []args) {System.out.println("Hello World"); // 打印 Hello World}
} 

下面将逐步介绍如何保存、编译以及运行这个程序:
1. 打开 Notepad,把上面的代码添加进去;
2. 把文件名保存为:MyFirstJava.java;
3. 打开 cmd 命令窗口,进入目标文件所在的位置,假设是 C:\
4. 在命令行窗口键入 javac MyFirstJava.java  按下回车键编译代码。如果代码没有错误,cmd 命令提示符会进入下一行。(假设环境变量都设置好了)。
5. 再键入 java MyFirstJava 按下回车键就可以运行程序了。

你将会在窗口看到 Hello World:

C:\> javac MyFirstJava.java
C:\> java MyFirstJava
Hello World

三. Java 语法

3.1. 基本语法

编写 Java 程序时,应注意以下几点:

  • 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass。
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的 Java 程序由 ​public static void main(String[] args)​ 方法开始执行。

3.2. Java 标识符

Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

关于 Java 标识符,有以下几点需要注意:

  • 所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始;
  • 首字符之后可以是字母(A-Z 或者 a-z)、美元符($)、下划线(_)或数字的任何字符组合;
  • 关键字不能用作标识符;
  • 标识符是大小写敏感的;
  • 合法标识符举例:age、$salary、_value、__1_value;
  • 非法标识符举例:123abc、-salary。

3.3. Java 修饰符

像其他语言一样,Java 可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:

  • 访问控制修饰符 : default、public、protected、private;
  • 非访问控制修饰符 : final、abstract、static、synchronized 和 volatile。

在后面的章节中我们会深入讨论 Java 修饰符。

3.4. Java 变量

Java 中主要有如下几种类型的变量:

  • 局部变量:块或方法中的变量;
  • 类变量(静态变量):用 static 修饰的变量;
  • 成员变量(非静态变量):类中没有用 static 修饰的变量。

3.5. Java 数组

数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。

public void test() {String[] array = new String[2];array[0] = "你好";array[1] = "流华追梦";
}

3.6. Java 枚举

Java 5.0 引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的 bug。

例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。

class FreshJuice {enum FreshJuiceSize { SMALL, MEDIUM, LARGE }FreshJuiceSize size;
}public class FreshJuiceTest {public static void main(String args[]) {FreshJuice juice = new FreshJuice();juice.size = FreshJuice.FreshJuiceSize.MEDIUM;}
}

注意:枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。

3.7. Java 关键字

下表列出了 Java 保留字。这些保留字不能用于常量、变量和任何标识符的名称。

关键字类型描述
abstract类、方法和变量修饰符抽象方法,抽象类的修饰符
assert断言断言条件是否满足
boolean基本类型布尔数据类型
break程序控制跳出循环或者label代码段
byte基本类型8-bit 有符号数据类型
case程序控制switch语句的一个条件
catch错误处理和try搭配捕捉异常信息
char基本类型16-bit Unicode字符数据类型
class类、方法和变量修饰符定义类
const保留关键字未使用
continue程序控制不执行循环体剩余部分
default程序控制switch语句中的默认分支
do程序控制循环语句,循环体至少会执行一次
double基本类型64-bit双精度浮点数
else程序控制if条件不成立时执行的分支
enum枚举类型
extends类、方法和变量修饰符表示一个类是另一个类的子类
false基本类型假,boolean 变量的两个合法值之一
final类、方法和变量修饰符表示一个值在初始化之后就不能再改变了
表示方法不能被重写,或者一个类不能有子类
finally为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。
float基本类型32-bit单精度浮点数
for程序控制for循环语句
goto保留关键字未使用
if程序控制条件语句
implements类、方法和变量修饰符表示一个类实现了接口
import包相关导入类
instanceof测试一个对象是否是某个类的实例
int基本类型32位整型数
interface类、方法和变量修饰符接口,一种抽象的类型,仅有方法和常量的定义
long基本类型64位整型数
native类、方法和变量修饰符表示方法用非java代码实现
new类、方法和变量修饰符分配新的类实例
null基本类型空,表示无值,不能将 null 赋给原始类型(byte、short、int、long、char、float、double、boolean)变量;
package包相关一系列相关类组成一个包
private访问控制表示私有字段,或者方法等,只能从类内部访问
protected访问控制表示字段只能通过类或者其子类访问
子类或者在同一个包内的其他类
public访问控制表示共有属性或者方法
return程序控制方法返回值
short基本类型16位数字
static类、方法和变量修饰符表示在类级别定义,所有实例共享的
strictfp类、方法和变量修饰符浮点数比较使用严格的规则
super变量引用表示基类
switch程序控制选择语句
synchronized类、方法和变量修饰符表示同一时间只能由一个线程访问的代码块
this变量引用表示调用当前实例
或者调用另一个构造函数
throw错误处理抛出异常
throws错误处理定义方法可能抛出的异常
transient类、方法和变量修饰符修饰不要序列化的字段
true基本类型真,boolean 变量的两个合法值中的一个
try错误处理表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码
void变量引用标记方法不返回任何值
volatile类、方法和变量修饰符标记字段可能会被多个线程同时访问,而不做同步
while程序控制while循环

以上就是目前 Java 中 53 个关键字的含义,这么多很难一下子全都记住,大家可以收藏起来,在学习的过程中,用的多了,自然而然就能记住了。

3.8. Java 注释

类似于 C/C++,Java 也支持单行以及多行注释。注释中的字符将被 Java 编译器忽略。

public class MyFirstJava {/* * 这是第一个Java程序* 它将打印Hello World* 这是一个多行注释的示例*/public static void main(String[] args) {// 这是单行注释的示例/* 这个也是单行注释的示例 */System.out.println("Hello World"); }
} 

3.9. Java 空行

空白行,或者只有注释的行,Java 编译器都会忽略掉。

3.10. Java 继承

    在 Java 中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。Java 类只能单继承,也就是说只能有一个父类。

    利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为父类或超类(super class),派生类称为子类(subclass)。

public class Animal {private String type;private int age;public void sound() {System.out.println("Animal make a sound");}
}public class Dog extends Animal {public void sound() {System.out.println("dog's bark");}
}

3.11. Java 接口(interface)

    在 Java 中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。Java 接口可以多继承。

public interface Animal {void sound();
}public class Dog implements Animal {private String type;private int age;public void sound() {System.out.println("dog's bark");}
}

四. 课后习题

1. 定义一个类,它包含成员变量和方法,并且给成员变量和方法添加注释。

2. 定义一个有继承的类,看看父类和子类之间有什么差别。

3. 定义一个接口,且有多个实现类。

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

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

相关文章

Oracle(2-14)User-Managed Incomplete Recovery

文章目录 一、基础知识1、Incomplete Recovery Overview 不完全恢复概述2、Situations Requiring IR 需要不完全恢复的情况3、Types of IR 不完全恢复的类型4、IR Guidelines 不完全恢复指南5、User-Managed Procedures 用户管理程序6、RECOVER Command Overview 恢复命令概述7…

算法训练营Day8(字符串)

344.反转字符串 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; class Solution {public void reverseString(char[] s) {for(int i 0,j s.length-1;i< s.length/2 ; i,j--){swap(s,i,j);}}public void swap(char[] s,int i,int j ){char temp s[i];s[i] s[j]…

Python数据科学视频讲解:Python注释

2.3 Python注释 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解2.3节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应用的全流程&#xff0c;包括数据科学应用和…

20231210原始编译NanoPC-T4(RK3399)开发板的Android10的SDK

20231210原始编译NanoPC-T4(RK3399)开发板的Android10的SDK 2023/12/10 17:27 rootrootrootroot-X99-Turbo:~$ rootrootrootroot-X99-Turbo:~$ mkdir nanopc-t4 rootrootrootroot-X99-Turbo:~$ rootrootrootroot-X99-Turbo:~$ rootrootrootroot-X99-Turbo:~$ cd nanopc-t4/ …

python4E 之 Dict 找到两个不同索引但都需要对应的值。

找到两个不同索引但都需要&#xff0c;对应的值。 df pd.DataFrame(np.random.randint(1, 10, [3,3]), columns list(ABC)) 通过 dict 制造key index_htable{} for _,row in idc.iterrows(): #按行循环 key str(row[u股票代码]) | str(row[u日期]) #根据不同 的索引…

45.0/HTML 简介(详细版)

目录 45.1 互联网简介 45.2 网页技术与分类 45.3 HTML 简介 45.3.1 什么是 HTML?(面试题) 45.3.2 HTML 文件结构 45.3.3 HTML 语法 45.3.4 实例演练步骤(面试题) 45.4 head 中的常用标签 45.4.1 title 标记 45.4.2 meta 标记 45.4.3 45.4.4 45.4.4(面试题)总结: 45…

【AIE】AIE微信合集

AIE微信合集 AIE(1) 对于Versal&#xff0c;我们从系统角度看&#xff0c;可将其分为3个Domain&#xff1a;AIE、PS和PL&#xff0c;如下图所示。如果要运行一个AIE的应用&#xff0c;绝大多数情况下&#xff0c;这3个Domain我们都会用到&#xff0c;使其协同工作。这里我们仅…

linux less命令(less指令)(查看开头、从开头查看、从起始查看、反向导航、反向查找)

文章目录 Linux Less 命令1. Less 命令简介2. 基础用法less filename<command> | less 3. 常用命令行选项4. 高级技巧和用法4.1 搜索内容4.2 标记和跳转4.3 查看多个文件 5. less命令使用文档6. 总结 Linux Less 命令 less 是一种在Linux环境中查看文件内容的工具&#…

《绝地求生》新手怎么玩 游戏基本介绍

随着电竞热潮的兴起&#xff0c;《绝地求生》已经成为了一款备受玩家热爱的游戏。这款游戏在全球范围内拥有庞大的玩家群体&#xff0c;它将你置身于一个荒无人烟的岛屿上&#xff0c;与其他99名玩家展开生死竞争。作为一个新手&#xff0c;下面闲游盒小盒子就为大家详细介绍一…

Ubuntu20.04创建并挂在zfs池

Ubuntu 下使用 ZFS [适用于中高级用户] 主磁盘上清洁安装带有ZFS的Ubuntu后&#xff0c;可以开始体验其特性。 所有ZFS配置过程都需要命令行。 我不知道有GUI工具。 创建一个 ZFS 池 本节仅适用于具有多个磁盘的系统。 如果只有一个磁盘&#xff0c;Ubuntu会在安装时自动创建…

写实3D游戏模型纹理贴图设置

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时&#xff0c;有几种不同的风格&#xff1a; …

Mybatis源码解析5:Mapper执行流程1

Mybatis源码解析5&#xff1a;Mapper执行流程1 1.项目结构2. 源码分析2.1 Mapper代理 MapperProxy#invoke2.2 创建MapperMethod2.2.1 方法名称解析器ParamNameResolve2.2.2 MapperMethod#execute 2.3 DefaultSqlSession2.4 CachingExecutor2.5 SimpleExecutor#doQuery获取连接对…

Nacos源码解读09——配置中心配置信息创建修改怎么处理的

存储配置 从整体上Nacos服务端的配置存储分为三层&#xff1a; 内存&#xff1a;Nacos每个节点都在内存里缓存了配置&#xff0c;但是只包含配置的md5&#xff08;缓存配置文件太多了&#xff09;&#xff0c;所以内存级别的配置只能用于比较配置是否发生了变更&#xff0c;只用…

进行生成简单数字图片

1.之前只能做一些图像预测,我有个大胆的想法,如果神经网络正向就是预测图片的类别,如果我只有一个类别那就可以进行生成图片,专业术语叫做gan对抗网络 2.训练代码 import torch import torch.nn as nn import torch.optim as optim import torchvision.transforms as transfo…

飞天使-rsync大文件断点续传与vim批量删除

文章目录 rsync 断点续传&#xff0c;亲测有效vim 批量删除消息 rsync 断点续传&#xff0c;亲测有效 rsync -vzrtp -P --append -e "/usr/bin/ssh -p 22 -o StrictHostKeyCheckingno" m.tar.gz root10.0.0.1:/tmp后台运行 screem 既可 或者 nohup rsync -vzrt…

【华为od】存在一个m*n的二维数组,其成员取值范围为0,1。其中值为1的元素具备扩散性,每经过1S,将上下左右值为0的元素同化为1。

存在一个m*n的二维数组,其成员取值范围为0,1。其中值为1的元素具备扩散性,每经过1S,将上下左右值为0的元素同化为1。将数组所有成员初始化为0,将矩阵的[i, j]和[m,n]位置上元素修改成1后,在经过多长时间所有元素变为1。 输入描述 输入的前两个数字是矩阵大小。后面是数字…

盛域宏数合伙人张天:AI时代,数字化要以AI重构

大数据产业创新服务媒体 ——聚焦数据 改变商业 在这个飞速发展的科技时代&#xff0c;数字化已经深刻地改变了我们的生活和商业方式。信息技术的迅猛发展使得数据成为现代社会最宝贵的资源之一。数字化已经不再是可选项&#xff0c;而是企业持续发展的必由之路。背靠着数据的…

【React】路由的基础使用

react-router-dom6的基础使用 1、安装依赖 npm i react-router-dom默认安装最新版本的 2、在src/router/index.js import { createBrowserRouter } from "react-router-dom"/* createBrowserRouter&#xff1a;[/home]--h5路由createHashRouter&#xff1a;[/#/ho…

Linux访问NFS存储及自动挂载

本章主要介绍NFS客户端的使用 创建NFS服务器并通过NFS共享一个目录在客户端上访问NFS共享的目录自动挂载的配置和使用 1.1 访问NFS存储 前面那篇介绍了本地存储&#xff0c;本章就来介绍如何使用网络上上的存储设备。NFS即网络文件系统&#xff0c;所实现的是Linux和Linux之…

通信:mqtt学习网址

看这个网址&#xff1a;讲的很详细&#xff0c;后面补实战例子 第一章 - MQTT介绍 MQTT协议中文版 (gitbooks.io)https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introduction.html