四、Java 基础语法


一、Java 的类、对象、方法和实例变量

  • 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。
  • 对象:对象是类的一个实例,有状态(实例变量)和行为(方法)。例如:一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • 类:类是一个模板,或者大家可以理解为这是一个集合,它描述了一类对象的行为和状态。例如:狗是一个类,一只拉布拉多是一个对象,一只金毛是另一个对象,但它俩同属于一类。
  • 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是再方法中完成的。
  • 实例变量每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。

二、第一个 Java 程序

  • 接下来我们开始编写第一个程序

1、新建项目

  • 打开 IDEA
  • 首先我们新建一个项目,然后储存到自己想要储存的地方(建议在除C盘之外新建一个文件夹,专门储存以后学习时用到的代码)

  • 新建项目之后,页面是这样的,我们在这里可以直接把它给的Main删掉

2、新建包

  • 新建一个包

3、新建类

  • 包名如下所示,当然大家可以自己起名字,主要以后我们方便管理,然后再在包中建一个 Java 类

4、开始编写代码

  • 这样我们就建成了一个类,接下来我们开始编写第一个代码
  • 第一个代码如下
java 复制代码
public class HelloWorld {
    /* 第一个Java程序
     * 它将输出字符串 Hello World
     */
    public static void main(String[] args) {
        System.out.println("Hello World"); // 输出 Hello World
    }
}
  • 结果如下,左下角输出 Hello World ,这样我们就完成了第一个代码
  • Java 程序的主方法(main 方法)。在 Java 中,main 方法是程序的入口点,也就是说,当你运行一个 Java 程序时,程序的执行从这个方法开始,下图对此进行简单讲解:

三、基本语法

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

四、Java 标识符

  • Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
  • 关于 Java 标识符,有以下几点需要注意:

所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始

首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合

关键字不能用作标识符

标识符是大小写敏感的

合法标识符举例:age、$salary、_value、__1_value

非法标识符举例:123abc、-salary


五、Java 修饰符

  • 像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
  • 访问控制修饰符 : default, public , protected, private
  • 非访问控制修饰符 : final, abstract, static, synchronized
  • 在后面的章节中我们会深入讨论 Java 修饰符。
  • Java 修饰符我们在后面会详细讲解

六、Java 变量

  • Java 中主要有如下几种类型的变量
  • 局部变量
  • 类变量(静态变量)
  • 成员变量(非静态变量)

七、Java 数组

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

八、Java 枚举

  • Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的 bug。
  • 例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。
  • 注意:枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。

九、Java 关键字

  • 下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。
类别 关键字 说明
访问控制 private 私有的
访问控制 protected 受保护的
访问控制 public 公共的
访问控制 default 默认的
类、方法和变量修饰符 abstract 声明抽象
类、方法和变量修饰符 class
类、方法和变量修饰符 extends 扩充、继承
类、方法和变量修饰符 final 最终值、不可改变的
类、方法和变量修饰符 implements 实现(接口)
类、方法和变量修饰符 interface 接口
类、方法和变量修饰符 native 本地、原生方法(非Java实现)
类、方法和变量修饰符 new 创建
类、方法和变量修饰符 static 静态
类、方法和变量修饰符 strictfp 严格浮点、精准浮点
类、方法和变量修饰符 synchronized 线程、同步
类、方法和变量修饰符 transient 短暂
类、方法和变量修饰符 volatile 易失
程序控制语句 break 跳出循环
程序控制语句 case 定义一个值以供 switch 选择
程序控制语句 continue 继续
程序控制语句 do 运行
程序控制语句 else 否则
程序控制语句 for 循环
程序控制语句 if 如果
程序控制语句 instanceof 实例
程序控制语句 return 返回
程序控制语句 switch 根据值选择执行
程序控制语句 while 循环
错误处理 assert 断言表达式是否为真
错误处理 catch 捕捉异常
错误处理 finally 有没有异常都执行
错误处理 throw 抛出一个异常对象
错误处理 throws 声明一个异常可能被抛出
错误处理 try 捕获异常
包相关 import 引入
包相关 package
基本类型 boolean 布尔型
基本类型 byte 字节型
基本类型 char 字符型
基本类型 double 双精度浮点
基本类型 float 单精度浮点
基本类型 int 整形
基本类型 long 长整型
基本类型 short 短整型
变量引用 super 父类、超类
变量引用 this 本类
变量引用 void 无返回值
保留关键字 goto 是关键字,但不能实用
保留关键字 const 是关键字,但不能实用
  • 这里给大家写一下上面这个表格的 HTML 嗷,因为我自己也是学了一下用 Markdown 写表格,如果大家也有需要的话可以简单看看
html 复制代码
<table>
    <!-- 标题 -->
	<tr>
        <th>类别</th><th>关键字</th><th>说明</th>
    </tr>
    <!-- 访问控制 -->
    <tr>
        <td style="text-align:center" rowspan="4">访问控制</td>
        <td style="text-align:center">private</td>
        <td style="text-align:center">私有的</td>
	</tr>
    <tr>
        <td style="text-align:center">protected</td>
        <td style="text-align:center">受保护的</td>
    </tr>
    <tr>
        <td style="text-align:center">public</td>
        <td style="text-align:center">公共的</td>
    </tr>
    <tr>
        <td style="text-align:center">default</td>
        <td style="text-align:center">默认的</td>
    </tr>
    <!-- 类、方法和变量修饰符 -->
    <tr>
        <td style="text-align:center" rowspan="13">类、方法和变量修饰符</td>
        <td style="text-align:center">abstract</td>
        <td style="text-align:center">声明抽象</td>
	</tr>
    <tr>
        <td style="text-align:center">class</td>
        <td style="text-align:center">类</td>
    </tr>
    <tr>
        <td style="text-align:center">extends</td>
        <td style="text-align:center">扩充、继承</td>
    </tr>
    <tr>
        <td style="text-align:center">final</td>
        <td style="text-align:center">最终值、不可改变的</td>
    </tr>
    <tr>
        <td style="text-align:center">implements</td>
        <td style="text-align:center">实现(接口)</td>
    </tr>
    <tr>
        <td style="text-align:center">interface</td>
        <td style="text-align:center">接口</td>
    </tr>
    <tr>
        <td style="text-align:center">native</td>
        <td style="text-align:center">本地、原生方法(非Java实现)</td>
    </tr>
    <tr>
        <td style="text-align:center">new</td>
        <td style="text-align:center">创建</td>
    </tr>
    <tr>
        <td style="text-align:center">static</td>
        <td style="text-align:center">静态</td>
    </tr>
    <tr>
        <td style="text-align:center">strictfp</td>
        <td style="text-align:center">严格浮点、精准浮点</td>
    </tr>
    <tr>
        <td style="text-align:center">synchronized</td>
        <td style="text-align:center">线程、同步</td>
    </tr>
    <tr>
        <td style="text-align:center">transient</td>
        <td style="text-align:center">短暂</td>
    </tr>
    <tr>
        <td style="text-align:center">volatile</td>
        <td style="text-align:center">易失</td>
    </tr>
    <!-- 程序控制语句 -->
    <tr>
        <td style="text-align:center" rowspan="11">程序控制语句</td>
        <td style="text-align:center">break</td>
        <td style="text-align:center">跳出循环</td>
	</tr>
    <tr>
        <td style="text-align:center">case</td>
        <td style="text-align:center">定义一个值以供 switch 选择</td>
    </tr>
    <tr>
        <td style="text-align:center">continue</td>
        <td style="text-align:center">继续</td>
    </tr>
    <tr>
        <td style="text-align:center">do</td>
        <td style="text-align:center">运行</td>
    </tr>
    <tr>
        <td style="text-align:center">else</td>
        <td style="text-align:center">否则</td>
    </tr>
    <tr>
        <td style="text-align:center">for</td>
        <td style="text-align:center">循环</td>
    </tr>
    <tr>
        <td style="text-align:center">if</td>
        <td style="text-align:center">如果</td>
    </tr>
    <tr>
        <td style="text-align:center">instanceof</td>
        <td style="text-align:center">实例</td>
    </tr>
    <tr>
        <td style="text-align:center">return</td>
        <td style="text-align:center">返回</td>
    </tr>
    <tr>
        <td style="text-align:center">switch</td>
        <td style="text-align:center">根据值选择执行</td>
    </tr>
    <tr>
        <td style="text-align:center">while</td>
        <td style="text-align:center">循环</td>
    </tr>
    <!-- 错误处理 -->
    <tr>
        <td style="text-align:center" rowspan="6">错误处理</td>
        <td style="text-align:center">assert</td>
        <td style="text-align:center">断言表达式是否为真</td>
	</tr>
    <tr>
        <td style="text-align:center">catch</td>
        <td style="text-align:center">捕捉异常</td>
    </tr>
    <tr>
        <td style="text-align:center">finally</td>
        <td style="text-align:center">有没有异常都执行</td>
    </tr>
    <tr>
        <td style="text-align:center">throw</td>
        <td style="text-align:center">抛出一个异常对象</td>
    </tr>
    <tr>
        <td style="text-align:center">throws</td>
        <td style="text-align:center">声明一个异常可能被抛出</td>
    </tr>
    <tr>
        <td style="text-align:center">try</td>
        <td style="text-align:center">捕获异常</td>
    </tr>
    <!-- 包相关 -->
    <tr>
        <td style="text-align:center" rowspan="2">包相关</td>
        <td style="text-align:center">import</td>
        <td style="text-align:center">引入</td>
	</tr>
    <tr>
        <td style="text-align:center">package</td>
        <td style="text-align:center">包</td>
    </tr>
    <!-- 基本类型 -->
    <tr>
        <td style="text-align:center" rowspan="8">基本类型</td>
        <td style="text-align:center">boolean</td>
        <td style="text-align:center">布尔型</td>
	</tr>
    <tr>
        <td style="text-align:center">byte</td>
        <td style="text-align:center">字节型</td>
    </tr>
    <tr>
        <td style="text-align:center">char</td>
        <td style="text-align:center">字符型</td>
    </tr>
    <tr>
        <td style="text-align:center">double</td>
        <td style="text-align:center">双精度浮点</td>
    </tr>
    <tr>
        <td style="text-align:center">float</td>
        <td style="text-align:center">单精度浮点</td>
    </tr>
    <tr>
        <td style="text-align:center">int</td>
        <td style="text-align:center">整形</td>
    </tr>
    <tr>
        <td style="text-align:center">long</td>
        <td style="text-align:center">长整型</td>
    </tr>
    <tr>
        <td style="text-align:center">short</td>
        <td style="text-align:center">短整型</td>
    </tr>
    <!-- 变量引用 -->
    <tr>
        <td style="text-align:center" rowspan="3">变量引用</td>
        <td style="text-align:center">super</td>
        <td style="text-align:center">父类、超类</td>
	</tr>
    <tr>
        <td style="text-align:center">this</td>
        <td style="text-align:center">本类</td>
    </tr>
    <tr>
        <td style="text-align:center">void</td>
        <td style="text-align:center">无返回值</td>
    </tr>
    <!-- 保留关键字 -->
    <tr>
        <td style="text-align:center" rowspan="2">保留关键字</td>
        <td style="text-align:center">goto</td>
        <td style="text-align:center">是关键字,但不能实用</td>
	</tr>
    <tr>
        <td style="text-align:center">const</td>
        <td style="text-align:center">是关键字,但不能实用</td>
    </tr>
</table>
  • 注意:Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用。

十、Java 注释

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

十一、Java 空行

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

十二、继承

  • 在 Java 中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。
  • 利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(sub class)。

十三、接口

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

相关推荐
神仙别闹6 分钟前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
XINGTECODE7 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
天天扭码12 分钟前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
程序猿进阶13 分钟前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
FIN技术铺17 分钟前
Spring Boot框架Starter组件整理
java·spring boot·后端
zwjapple23 分钟前
typescript里面正则的使用
开发语言·javascript·正则表达式
小五Five25 分钟前
TypeScript项目中Axios的封装
开发语言·前端·javascript
小曲程序25 分钟前
vue3 封装request请求
java·前端·typescript·vue
前端每日三省26 分钟前
面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们?
开发语言·前端·javascript
凡人的AI工具箱40 分钟前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang