Java 基础语法 缺乏、安全感 2022-06-03 09:15 190阅读 0赞 ## Java 基础语法 ## 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。 * **对象**:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 * **类**:类是一个模板,它描述一类对象的行为和状态。 * **方法**:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。 * **实例变量**:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。 ## 第一个Java程序 ## 下面看一个简单的Java程序,它将打印字符串* Hello World* public class MyFirstJavaProgram { /* 第一个Java程序. * 它将打印字符串 Hello World */ public static void main(String []args) { System.out.println("Hello World"); // 打印 Hello World } } 下面将逐步介绍如何保存、编译以及运行这个程序: * 打开Notepad,把上面的代码添加进去; * 把文件名保存为:MyFirstJavaProgram.java; * 打开cmd命令窗口,进入目标文件所在的位置,假设是C:\\ * 在命令行窗口键入 javac MyFirstJavaProgram.java 按下enter键编译代码。如果代码没有错误,cmd命令提示符会进入下一行。(假设环境变量都设置好了)。 * 再键入java MyFirstJavaProgram 按下Enter键就可以运行程序了 你将会在窗口看到 Hello World C : > javac MyFirstJavaProgram.java C : > java MyFirstJavaProgram Hello World -------------------- ## 基本语法 ## 编写Java程序时,应注意以下几点: * **大小写敏感**:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。 * **类名**:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。 * **方法名**:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。 * **源文件名**:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。 * **主方法入口**:所有的Java 程序由**public static void main(String args\[\])**方法开始执行。 -------------------- ## Java标识符 ## Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 关于Java标识符,有以下几点需要注意: * 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(\_)开始 * 首字符之后可以是任何字符的组合 * 关键字不能用作标识符 * 标识符是大小写敏感的 * 合法标识符举例:age、$salary、\_value、\_\_1\_value * 非法标识符举例:123abc、-salary -------------------- ## Java修饰符 ## 像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符: * 可访问修饰符 : default, public , protected, private * 不可访问修饰符 : final, abstract, strictfp 在后面的章节中我们会深入讨论Java修饰符。 ## Java变量 ## Java中主要有如下几种类型的变量 * 局部变量 * 类变量(静态变量) * 成员变量(非静态变量) -------------------- ## Java数组 ## 数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。 -------------------- ## Java枚举 ## Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。 例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。 -------------------- ## 实例 ## class FreshJuice { enum FreshJuiceSize{ SMALL, MEDUIM, LARGE } FreshJuiceSize size; } public class FreshJuiceTest { public static void main(String args[]){ FreshJuice juice = new FreshJuice(); juice.size = FreshJuice. FreshJuiceSize.MEDUIM ; } } **注意:**枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。 -------------------- ## Java关键字 ## 下面列出了Java保留字。这些保留字不能用于常量、变量、和任何标识符的名称。 <table style="width: 736px;"> <tbody> <tr style="background-color: rgb(239, 239, 239);"> <th style="padding: 3px;border-top-width: 1px;border-bottom-style: none;border-top-color: rgb(189, 189, 189);border-right-color: rgb(189, 189, 189);border-left-color: rgb(189, 189, 189);color: rgb(255, 255, 255);vertical-align: top;background-color: rgb(189, 189, 189);">关键字</th> <th style="padding: 3px;border-top-width: 1px;border-bottom-style: none;border-top-color: rgb(189, 189, 189);border-right-color: rgb(189, 189, 189);border-left-color: rgb(189, 189, 189);color: rgb(255, 255, 255);vertical-align: top;background-color: rgb(189, 189, 189);">描述</th> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">abstract</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">抽象方法,抽象类的修饰符</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">assert</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">断言条件是否满足</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">boolean</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">布尔数据类型</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">break</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">跳出循环或者label代码段</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">byte</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">8-bit 有符号数据类型</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">case</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">switch语句的一个条件</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">catch</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">和try搭配捕捉异常信息</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">char</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">16-bit Unicode字符数据类型</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">class</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">定义类</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">const</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">未使用</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">continue</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">不执行循环体剩余部分</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">default</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">switch语句中的默认分支</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">do</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">循环语句,循环体至少会执行一次</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">double</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">64-bit双精度浮点数</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">else</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">if条件不成立时执行的分支</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">enum</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">枚举类型</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">extends</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示一个类是另一个类的子类</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">final</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示一个值在初始化之后就不能再改变了<br>表示方法不能被重写,或者一个类不能有子类</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">finally</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">float</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">32-bit单精度浮点数</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">for</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">for循环语句</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">goto</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">未使用</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">if</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">条件语句</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">implements</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示一个类实现了接口</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">import</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">导入类</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">instanceof</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">测试一个对象是否是某个类的实例</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">int</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">32位整型数</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">interface</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">接口,一种抽象的类型,仅有方法和常量的定义</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">long</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">64位整型数</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">native</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示方法用非java代码实现</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">new</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">分配新的类实例</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">package</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">一系列相关类组成一个包</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">private</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示私有字段,或者方法等,只能从类内部访问</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">protected</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示字段只能通过类或者其子类访问<br>子类或者在同一个包内的其他类</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">public</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示共有属性或者方法</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">return</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">方法返回值</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">short</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">16位数字</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">static</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示在类级别定义,所有实例共享的</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">strictfp</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">浮点数比较使用严格的规则</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">super</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示基类</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">switch</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">选择语句</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">synchronized</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示同一时间只能由一个线程访问的代码块</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">this</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示调用当前实例<br>或者调用另一个构造函数</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">throw</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">抛出异常</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">throws</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">定义方法可能抛出的异常</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">transient</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">修饰不要序列化的字段</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">try</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">void</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">标记方法不返回任何值</td> </tr> <tr> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">volatile</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">标记字段可能会被多个线程同时访问,而不做同步</td> </tr> <tr style="background-color: rgb(239, 239, 239);"> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">while</td> <td style="padding: 7px 5px;min-width: 40px;vertical-align: top;box-sizing: border-box;">while循环</td> </tr> </tbody> </table> -------------------- ## Java注释 ## 类似于C/C++,Java也支持单行以及多行注释。注释中的字符将被Java编译器忽略。 public class MyFirstJavaProgram{ /* 这是第一个Java程序 *它将打印Hello World * 这是一个多行注释的示例 */ public static void main(String []args){ // 这是单行注释的示例 /* 这个也是单行注释的示例 */ System.out.println("Hello World"); } } -------------------- ## Java 空行 ## 空白行,或者有注释的的行,Java编译器都会忽略掉。 -------------------- ## 继承 ## 在Java中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。 利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(subclass)。 ## 接口 ## 在Java中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。 接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。 下一节介绍Java编程中的类和对象。之后你将会对Java中的类和对象有更清楚的认识。 ![6e8b6c624b6448a4ebd266c6d81987d1.png][] [6e8b6c624b6448a4ebd266c6d81987d1.png]: /images/20220603/640fda1bc8404f4582814e9cc4d9091a.png
还没有评论,来说两句吧...