Java 基础语法
一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。
- 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
- 类:类是一个模板,它描述一类对象的行为和状态。
- 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
- 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
第一个Java程序
下面看一个简单的 Java 程序,它将输出字符串 Hello World
实例
运行实例 »
下面将逐步介绍如何保存、编译以及运行这个程序:
- 打开代码编辑器,把上面的代码添加进去;
- 把文件名保存为:HelloWorld.java;
- 打开 cmd 命令窗口,进入目标文件所在的位置,假设是 C:\
- 在命令行窗口输入 javac HelloWorld.java 按下回车键编译代码。如果代码没有错误,cmd 命令提示符会进入下一行(假设环境变量都设置好了)。
- 再键输入 java HelloWorld 按下回车键就可以运行程序了
你将会在窗口看到 Hello World
$ javac HelloWorld.java $ java HelloWorld Hello World
如果遇到编码问题,我们可以使用 -encoding 选项设置 utf-8 来编译:
javac -encoding UTF-8 HelloWorld.java java HelloWorld
Gif 图演示:
基本语法
编写 Java 程序时,应注意以下几点:
- 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
- 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
- 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
- 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
- 主方法入口:所有的 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 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 | 是关键字,但不能使用 |
注意:Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用。
Java注释
类似于 C/C++、Java 也支持单行以及多行注释。
注释中的字符将被 Java 编译器忽略。
更多内容可以参考:Java 注释。
Java 空行
空白行或者有注释的行,Java 编译器都会忽略掉。
继承
在 Java 中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。
利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(sub class)。
接口
在 Java 中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。
接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。
Java 源程序与编译型运行区别
如下图所示:
下一节介绍 Java 编程中的类和对象。之后你将会对 Java 中的类和对象有更清楚的认识。
Android
297***4077@qq.com
标识符可以用来标识变量名、类名、类中的方法名和文件名等。
命名规则:
关键字:都是小写的,jdk1.2多了strictfp(经准浮点型),关键字 jdk1.4多了assert(断言)关键字,jdk1.5多了enum(枚举) 关键字。
true、false、null 严格说不应该算关键字,应称其为保留字更合适。
习惯:
常用的转义字符:
Android
297***4077@qq.com
amy
143***9399@qq.com
Java的八种基本类型:(按字节来分)
boolean 布尔型 1个字节 8bit(8位)
byte 字节类型 1个字节
char 字符类型 2个字节
short 短整型 2个字节
int 整型 4个字节
float 浮点型(单精度)4个字节
long 长整型 8个字节
double 双精度类型 8个字节
Java中默认的整数类型是int,如果要定义为long ,则要在数值后加上L或者l
默认的浮点型是双精度浮点,如果要定义float,则要在数值后面加上f或者F
一个字节等于8位,1个字节等于256个数。2^8
一个英文字母或者阿拉伯数字占一个字节
一个汉字占2个字节
amy
143***9399@qq.com
jinling
103***5512@qq.com
参考地址
一、命名规范
1、 项目名全部小写
2、 包名全部小写
3、 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。如:public class MyFirstClass{}
4、 变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。如:
5、 常量名全部大写
A如:
6、所有命名规则必须遵循以下规则:
二、注释规范
1、类注释
在每个类前面必须加上类注释,注释模板如下:
2、属性注释
在每个属性前面必须加上属性注释,注释模板如下:
3、方法注释在每个方法前面必须加上方法注释,注释模板如下:
4、构造方法注释
在每个构造方法前面必须加上注释,注释模板如下:
5、方法内部注释
在方法内部使用单行或者多行注释,该注释根据实际情况添加。
如:
jinling
103***5512@qq.com
参考地址
ycxchkj
xch***163.com
Java编程规范
package的命名: package 的名字由全部小写的字母组成,例如:com.runoob。
class和interface的命名: class和interface的名字由大写字母开头而其他字母都小写的单词组成,例如:Person,RuntimeException。
class变量的命名: 变量的名字用一个小写字母开头,后面的单词用大写字母开头,例如:index,currentImage。
class 方法的命名: 方法的名字用一个小写字母开头,后面的单词用大写字母开头,例如:run(),getBalance()。
staticfinal变量的命名: static final变量的名字所有字母都大写,并且能表示完整含义。例如:PI,PASSWORD。
参数的命名: 参数的名字和变量的命名规范一致。
数组的命名: 数组应该总是用这样的方式来命名:byte[] buffer。
养成良好的编程习惯,是一个合格程序员必备的条件!加油!
ycxchkj
xch***163.com
你看见我ID了
112***0112@qq.com
一个完整的Java。源程序应该包括下列部分:
例如:
package语句:由于Java编译器为每个类生成一个字节码文件,且文件名与类名相同因此同名的类有可能发生冲突。为了解决这一问题,Java提供包来管理类名空间,包实 提供了一种命名机制和可见性限制机制。
你看见我ID了
112***0112@qq.com
admin
125***7748@qq.com
数据类型的溢出
在 Java 中,只有数字类型才能参与运算。但是每个数据类型都有他的取值范围。
例如 byte 数据类型,它的取值范围为 -128 - 127 。
当我们使用 byte b = 128; 时,肯定会报错。
但是使用 byte b = 127+1; 并不会报错。
而且运算的结果为 -128。
我们可以向数据类型的取值范围看作是一个圆,每多一个数据向前移动一个,当数据达到最大值时,我们再加 1,可以就会变成最小值,这就是数据的溢出。
admin
125***7748@qq.com
hhh
945***651@qq.com
参考地址
byte 取值范围
Java 中,byte 占一个字节,取值范围为何是 -128~127?(-2^7~2^7-1)
计算机是用二进制来表示数据的,一个字节也就是 8 个比特位,其中最高位表示符号位(0 正 1 负)。
故 byte 的取值范围为 1000 0000 到 0111 1111。
在 Java 中,是采用补码来表示数据的。
正数的补码和原码相同,负数的补码是在原码的基础上各位取反然后加 1。
1000 000 是补码,减一然后按位取反得到其原码 1000 0000。(减一得 0111 1111,再按位取反得 1000 0000)
因为是负数,所以最小的 byte 值为 -2^7=-128。
0111 1111 的十进制为 2^7-1=127(等比序列求和)。
byte 是一个字节,共有 2^8=256 种可能性,也就是 -128~127。
其他基本数据类型同理:
char 没有负值,占两个字节,所以取值范围是 0~2^16-1(65535)。
hhh
945***651@qq.com
参考地址
璀璨流星雨
198***6202@qq.com
参考地址
throw 和 throws 的区别:
throws 用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。
throw 则是用来抛出一个具体的异常类型。
throws 在方法后边声明异常,其实就是自己不想对异常做出任何的处理,告诉别人自己可能出现的异常,交给别人处理,让别人处理。
throw 就是自己处理一个异常,有两种方式要么是自己捕获异常 try...catch 代码块,要么是抛出一个异常(throws 异常)。
璀璨流星雨
198***6202@qq.com
参考地址
cxy
597***644@qq.com
1、java文件通过java编译器把.java文件编译为.class文件
2、.class文件通过java虚拟机(JVM)传送指令给解释器
3、解释器将指令翻译成特定机器上的目标机器码,进行运行
cxy
597***644@qq.com
恋未遂
170***3913@qq.com
补充一下,其实自己在进行编译的时候,标识符是可以用中文的,如下所示的类名就可以为中文:
并不是很死板,真的如规定所说的那样。恋未遂
170***3913@qq.com