目录
第一个Java程序
public class HelloWorld { //类名必须与文件名相同
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
基本概念
java是面对对象语言
类,包含状态和行为
对象,类的一个实例
实例变量
方法,就是动作
继承,类A继承类B中原有的属性和方法,也即B派生A。被继承的称为超类(super class);继承的称为子类(subclass)
接口
重写(Override)与重载(Overload)
多态
抽象类
封装
知识点或注意事项
类名第一个字母是大写,方法名的第一个字母是小写
主方法入口:每个程序都是以public static void main(String[] args)开始运行的
String而非string
函数体后面不加分号
一个源文件只能有一个public类,可以有多个非public类。public类名必须与源文件的名字一致。源文件开头一行是package名。如果要用到import语句,应该放在package名后面
顺序:java project->package->class;package对各个class进行归类,引入package用import
&或|或~是位运算符;&&或||或!是逻辑运算符
instanceof:该运算符用于操作对象实例,检查该对象是否是一个特定类型
基本语法
修饰符,修饰类中方法和属性
访问控制修饰符 : default, public , protected, private
default:默认态,在定义时若没有特指访问控制,则默认是default,不能跨package
public:公共态,可跨class也可跨package
protected:受保护态,对同一包内的类和所有子类可见。只能被类本身以及子类访问,如果子类在别的package也是可以访问的
private:私有态,只能被自身的class访问,不能跨class和跨package
非访问控制修饰符 : final, abstract, static, synchronized
static 修饰符,用来修饰类方法和类变量。修饰变量:用来声明独立于对象的静态变量;修饰方法:静态方法不能使用类的非静态变量
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract 修饰符,用来创建抽象类和抽象方法;声明抽象类的唯一目的是为了将来对该类进行扩充。
synchronized 和 volatile 修饰符,主要用于线程的编程。
变量(注意,变量使用之前需要声明,不同于python)
局部变量,块内的临时变量
类变量(静态变量),类变量在类中,方法体之外,但必须声明为 static 类型,大多数是public类型;无论一个类创建了多少个对象,类只拥有类变量的一份拷贝,且
成员/实例变量(非静态变量),定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化;一般情况下一般把该变量设为private,设定方法来访问它
注释
单行注释:
\\注释文字
\* 注释文字 *\
多行注释:
\*注
释
文
字*\
基本数据类型
内置数据类型:byte, short, int, long, float, double, boolean, char
引用数据类型:类似指针,默认值null,比如可以用来指向一个对象
常量:final+常量定义,最好用大写来与变量区分;数字前缀0表示八进制,0x表示十六进制
数据类型转换:自动或强制类型转换
自动类型转换:
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
强制类型转换:
doubel a = 1.23;
int b = (int)a;
//b=1;
循环结构
while(xxx){ }
do{ } while(xxx)
for(xxx) { } 或 for (x: [1,2,3]) { }
break; continue
其他语句结构:if,else; switch,case;
流(Stream)、文件(File)和IO(这些还没细看,用的时候再看)
Java内置包装类
Java内置包装类(类中也内置了很多方法;import java.util.*;)
- Number类
- Math类
- Character类
- String类;长度:a.length();连接字符串:a.concat(b)
- StringBuffer和StringBuilder类:对字符串进行修改
- Data类,表示时间;更复杂的是Calendar类
- Scanner类:输入类
-。。。
Data类:
long start = System.currentTimeMillis( );
long end = System.currentTimeMillis( );
long diff = end - start;
System.out.println("Difference is : " + diff);
Scanner类:
Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
// next方式接收字符串
System.out.println("next方式接收:");
// 判断是否还有输入
if (scan.hasNext()) {
String str1 = scan.next();
System.out.println("输入的数据为:" + str1);
}
scan.close();
}
}
数组
声明定义
一维:
int[] a = new int[3]; //首选int[] a格式,而不是int a[]格式
int a[] = new int[3];
int[] a = (1,2,3);
二维:
double[][] a1 = new double[2][2];
赋值
循环
普通循环
for-each
for(int x:a)
{x...}
数组作为函数参数
f(int[] array){ }
数组类:Arrays,方便操作数组
异常处理
需要的时候再看
枚举
定义:枚举(enum)是一个特殊的类,一般包含一组常量(和若干方法),其中构造方法只能是private。
enum Color
{
RED, GREEN, BLUE;
}
public class Test
{
// 执行输出结果
public static void main(String[] args)
{
Color c1 = Color.RED;
System.out.println(c1);
}
}
迭代枚举元素
for (Color myVar : Color.values()) {
System.out.println(myVar);
}
内置方法 values(), ordinal() 和 valueOf()