Java基础语法
先抄写运行一个HelloWorld
1 public class HelloWorld { 2 public static void main(String []args) { 3 System.out.println("Hello World"); // 打印 Hello World 4 } 5 }
保存为HelloWorld.java(这里需要文件名与类名相同
(linux环境)打开终端并cd到当前Java文件所在目录
输入:javac HelloWorld.java
摁下回车编译代码,可以看到文件目录下出现编译好的文件HelloWorld.class
再输入:java HelloWorld
就可以在窗口看到Hello World,如图
(这里请无视掉两行Picked up _JAVA_OPTIONS)
成功写出了helloworld
然后开始学习
基本语法:
编写程序时,需要注意的几点:
1.大小写敏感,即HelloWorld与helloworld不同
2.类名、变量名以及方法(函数)名都被称为标识符,标识符命名规范与C++基本相同
- 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
- 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
3.源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存,文件名的后缀为.java。确切的说,是和类中public类的类名相同,所以一个Java文件中只能有唯一的一个public类
4.所有的Java 程序由public static void main(String []args)方法开始执行。显然它应该在publilc类里。
Java修饰符:
像C++一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
- 访问控制修饰符 : default, public , protected, private
- 非访问控制修饰符 : final, abstract, static
修饰符用法及含义基本可类似于C++
final类似于const,abstract类似于virtual,static类似于static
上面是我瞎说的都不可信,后面再深入讨论几种修饰符
Java变量类型:
Java中主要有如下几种类型的变量
局部变量
实例变量
类变量
成员变量
局部变量:
- 局部变量声明在方法、构造方法或者语句块中,在执行方法的时候创建,当它们执行完成后,变量将会被销毁,所以只在声明它的方法、构造方法或者语句块中可见
- 局部变量是在栈上分配的
- 局部变量没有默认值,声明后必须初始化才可以使用
(函数和构造函数和C++一样都好说,语句块留到后面解释)
实例变量
- 实例变量声明在一个类中,但在方法、构造方法和语句块之外
- 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定
- 实例变量在对象创建的时候创建,在对象被销毁的时候销毁
- 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息(就是推荐你有getter和setter函数
- 访问修饰符可以修饰实例变量,但不能修饰上面的局部变量
- 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见
- 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。
类变量
- 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外
- 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝
- 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变
- 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量
- 静态变量在程序开始时创建,在程序结束时销毁
- 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型
- 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化
- 静态变量可以通过:ClassName.VariableName的方式访问
- 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致
成员变量
实例变量与类变量均属于成员变量
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 | 表示一个类是另一个类的子类 |
final | 表示一个值在初始化之后就不能再改变了 表示方法不能被重写,或者一个类不能有子类 |
finally | 为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。 |
float | 32-bit单精度浮点数 |
for | for循环语句 |
goto | 未使用 |
if | 条件语句 |
implements | 表示一个类实现了接口 |
import | 导入类 |
instanceof | 测试一个对象是否是某个类的实例 |
int | 32位整型数 |
interface | 接口,一种抽象的类型,仅有方法和常量的定义 |
long | 64位整型数 |
native | 表示方法用非java代码实现 |
new | 分配新的类实例 |
package | 一系列相关类组成一个包 |
private | 表示私有字段,或者方法等,只能从类内部访问 |
protected | 表示字段只能通过类或者其子类访问 子类或者在同一个包内的其他类 |
public | 表示共有属性或者方法 |
return | 方法返回值 |
short | 16位数字 |
static | 表示在类级别定义,所有实例共享的 |
strictfp | 浮点数比较使用严格的规则 |
super | 表示基类 |
switch | 选择语句 |
synchronized | 表示同一时间只能由一个线程访问的代码块 |
this | 表示调用当前实例 或者调用另一个构造函数 |
throw | 抛出异常 |
throws | 定义方法可能抛出的异常 |
transient | 修饰不要序列化的字段 |
try | 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码 |
void | 标记方法不返回任何值 |
volatile | 标记字段可能会被多个线程同时访问,而不做同步 |
while | while循环 |
JAVA注释:
和C++的注释完全一样的
至此,你应该能类比C++完整地写一个能够编译的小代码了(大概)
有些东西很像C++但也可能是暂时不清楚区别
所以如何类比还是因人而异吧
科科