基本语法
编写 Java 程序时,应注意以下几点:
1,主方法入口:所有的 Java 程序由 public static void main(String[] args)
2,大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
3,类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 DemoJavaClass。
4, 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
5,源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存,文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:
1,关键字不能用作标识符
2,标识符是大小写敏感的
3,合法标识符举例:age、$salary、_value、__1_value
4,非法标识符举例:123abc、-salary
5,所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
6, 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
修饰符
像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
1, 非访问控制修饰符 : final, abstract, static, synchronized
2,访问控制修饰符 : default, public , protected, private
变量
Java 中主要有如下几种类型的变量
1, 局部变量
2,类变量(静态变量)
3,成员变量(非静态变量)
数组
数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。数组长度一旦声明,不可改变不可追加
1.静态初始化,初始化时由程序员显示的指定每个数组的初始值,由系统觉得数组的长度。
int [] a=new int[]{1,2,3};
2.静态初始化的简写方式
int [] b={1,2,3};
3.动态初始化,初始化时由程序员指定数组长度,由系统为数组元素分配初始值,不同类型数组的初始值不同。
这里数组c已经定义和初始化了,并且由系统自动为数组元素赋值了,由于是int类型,所以初始值是c[0]=c[1]=c[2]=0;
int [] c=new int[3];
冒泡算法: 实现学生成绩排序并显示学生成绩列表
int [ ] arr = {78,89,67,98,90,56,88};
N个数的数组,需要比较N-1轮
for(int i=0; i<arr.length; i++){
for(int j=i; j<arr.length; j++){
if(arr[i]>arr[j]){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
枚举
枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的 bug。
实例:
public enum BusinessStatus
{
SUCCESS,
FAIL,
}
枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调用成员即可。Enum类的常用方法
实例
注意:枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。
关键字
下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。
注释
Java支持单行以及多行注释。注释中的字符将被 Java 编译器忽略。
空行
空白行或者有注释的行,Java 编译器都会忽略掉。
继承(extends)
在 Java 中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。
利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(subclass)。
class Animal { void eat() { System.out.println("animal : eat"); }} class Dog extends Animal { void eat() { System.out.println("dog : eat"); } void eatTest() { this.eat(); // this 调用自己的方法 super.eat(); // super 调用父类方法 }}
接口(interface)
在 Java 中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。
接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。
interface Animal { public void eat();
public void travel();
}
public class MammalInt implements Animal{ public void eat(){ System.out.println("Mammal eats"); } public void travel(){ System.out.println("Mammal travels"); } public int noOfLegs(){ return 0; } public static void main(String args[]){ MammalInt m = new MammalInt(); m.eat(); m.travel(); }}
源程序与编译型运行区别
如下图所示: