一、入门代码提神醒脑
public class Hello{
public static void main(String[] args){
System.out.println("Hello,World!");
}
}
<分析>
public(访问修饰符)修饰class和main()方法,表示它们均是公开的。
class是java中的关键字,表定义一个类。java是面向对象的语言,故一切都从class开始,一个程序的基本单位就是class。
class Hello,即类名为Hello。
类中可以定义若干方法,static关键字也是一个修饰符,它表示静态方法。java入口程序规定的方法必须是名为main()的静态方法,该方法的参数必须是String数组。
另外,main()参数也可以写作String args[],这种的虽不常用,但也应该认识。
至于 方法名与类名命名规则略,与C++基本一致。
二、java变量
java提供有两种变量类型,基本数据类型,以及引用类型。引用类型类似于C++中的指针,引用类型的默认值都是null。
1.基本类型:
整型 :byte(1),short(2),int(4),long(8)。
浮点型 :float(4),double(8)。
字符型 :char(2)。
布尔型 :boolean(通常为4)。
注意点:
#1 long类型的数据需要加后缀L(否则将作为整型解析),float类型的数据需要加后缀f或者F。
比如:
public class Main{
public static void main(String[] args){
long a = 10000000000000000000L;
float f = 6.54e12f;
}
}
#2 java中的char类型不仅可以表示ASCII码,也支持Unicode字符:
比如:
public class Main{
public static void main(String[] args){
char a = 'K';
char b = '六';
System.out.println(a);
System.out.println(b);
}
}
2.常量
final修饰符定义常量。
比如:
final double PI = 3.14; // PI是一个常量
常量一经初始化不可再次赋值。
3.var关键字
var关键字可以省略变量类型,简化代码。
例:
var f = 3.14f; //float
var i = 16; //int
var b = true; //boolean
4.类型转换
只提一点,比int类型小的类型做运算,java在编译时会将它们统一强制转换成int类型,当比int类型大的类型作运算,会自动转换成它们当中最大类型的那个。
自动类型转换与强制类型转换的其它细节略。
5.变量作用域
java中的作用域是由花括号的位置决定的。按照作用域的不同,常见的有类变量和局部变量。
#1 类变量
因为java是严格的完全面向对象的编程语言,它不允许变量在类外被定义,因此类变量的作用范围就是整个类。类变量也叫成员变量。类变量可以被该类中的其它方法或变量访问。
对类变量,还有一些修饰符:static、public、protected、private、friendly、default。
- static :被static修饰的成员变量称为静态变量或者全局变量,静态变量不依赖于特定的实例,而是被所有实例所共享。即只要有一个类被加载,JVM就会给类的静态变量分配存储空间,并可被该类访问。
- public :public修饰的成员变量对所有类和对象都可见,包括子类和其它包内的类。
- private :private表私有,即只有当前类对该成员变量具有访问权限。
- friendly :friendly修饰的成员变量只有同一个包下的可见,包外不可见。不写修饰符时默认为friendly。
- protected :protected修饰的成员变量只有该类或者其子类(包内或包外)可见,包外不可见。
- dafault :default表明该成员变量只有自己和与其同一个包内的类可见。
#2 局部变量
局部变量即在类的方法中定义的变量,它的作用域是该方法所在的代码块,局部变量在方法被执行时才会被创建,执行结束后即刻被销毁。
类似于C++的,在for()循环,while循环等的代码块中定义的变量,一旦跳出该代码块将无法被外部代码访问。
局部变量覆盖成员变量:
public class Text{
int i = 7;
public static void main(String[] args){
int i = 0;
System.out.println(i); //i=0覆盖i=7
}
}
// 0
三、数组
int[] a; //定义一个int数组,此时只得到了一个存放数组的变量,数组未被分配空间因此无法使用。
int[] a = new int[5]; //定义一个int型数组并分配五个空间
int[] a = {1,2,3,4,5}; //定义并初始化,不初始化默认为0
int a[] = new int[5]; //int[] a 与 int a[]的写法均可
String[] strs = {"hello","world","Hello","java"};//定义一个字符串数组
int[][] a; //创建一个二维数组
int[][] = new int[3][4] //创建一个二维数组并分配地址空间
int[][] = new int[3][] //创建一个长度不确定的二维数组
int[][] a = new int[][]{ //创建一个二维数组并初始化
{1,2},{3,4}
}
int[][] a = {{1,2},{3,4}} //创建一个二维数组并初始化
注意:数组本身是引用类型,数组名加索引与数组内成员一一对应。创建一个数组实质上是创建了一个名为int[]、String[]的数组对象,既然是对象,那就存在方法和属性,比如length获得数组长度,getclass()方法等。
四、java注释
// 与 /…/ 不再说,除此之外还有一种注释方法,以/**开头,/结束,如果有多行,每行以开头。
示例:
/*
* 未命名.java
* Copyright 2019 Administrator <Administrator@SD-201811171654>
*
*/
public class Hello{
public static void main(String[] args){
System.out.println("Hello,World!");
}
}
这种多行注释需要写在类和方法的定义处,用于自动创建文档。
五、类名与文件名
在写C++或者Python等的程序时,你不需要考虑文件的命名问题,因为任何命名都是被允许的。但在java中,因为类就是java程序的基本单位,故java的类名与文件的命名有一些规则需要注意,具体如下:
1.Java保存的文件名必须与类名一致;
2.如果文件中只有一个类,文件名必须与类名一致;
3.一个Java文件中只能有一个public类;
4.如果文件中不止一个类,文件名必须与public类名一致;
5.如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。