- UML(Unified Modeling Language,统一建模语言)
- 用例图(use case diagram)
- 类图(class diagram)
- 序列图(sequence diagram)
- 活动图(activity diagram):类似流程图
- 标识符命名要求
包名(package name):全小写
类名(class)&接口名(interface):首字母大写
方法名(method):首字母小写,第一个单词通常为动词,如balanceAccount()。
变量名(variable):小写,一般为名词。
常量名(constant name):基本数据类型全大写,多个单词下划线隔开;引用类型(对象类型)大小写混合,大写字母把单词隔开。
- 修饰符:public(公有的)、private(私有的)、protected(受保护的)、static(静态的)、final(最终的)
- 常量声明:
[修饰符] final 数据类型 常量名 = 数值(或字符串);
//使用关键字final来修饰,表示该变量的值不能改变。
- 数组
数组声明:
int[] intArray;//初始长度为null
初始化:
int[] intArray = {1,2,3,4};
或
int[] myArray = new int[3];
myArray [0] = 1;
myArray [1] = 2;
myArray [2] = 3;
- 一个类可以访问其所在包的所有类,还可以访问其他包中的所有public类。
- do{ } while();//注意末尾有分号
- 常用的包
包名 | 包内的类 |
java.lang(默认包,系统自动引入) | String、Wrapper classes(基本数据类型类)、Math、线程异常处理类等 |
java.util(Java实用类库,工具类包) | Calendar(处理日期)、Date(处理时间)、ArrayList(动态数组) |
java.text | DateFormat及其子类SimpleDateFormat(提供数字和日期格式化的类) |
java.awt(构建GUI的类库) | Graphics(低级绘图操作)、图形界面组件和布局管理(Button类、Label类、TextField接口) |
java.swing(扩展(继承)java.awt包,提供更美观的GUI类库) | JButton、JLabel、JTextField |
java.io | InputStream、OutputStream |
java.sql(实现JDBC(java database connection)的类库,提供访问数据库的类) | Connection、Statement、ResultSet |
java.net | Socket、ServerSoket |
- 实例化String对象的两种方法
- String myString = “Hello World”;
- String myString = new String(“Hello World”);
- String类的常用方法成员
header 1 | header 2 | 说明 |
int | length() | 取得字符串的长度 |
boolean | equals(String str) | 判断原字符串中的字符是否等于指定字符串str中的字符 |
String | toLowerCase() | 转换字符串中的英文字母为小写 |
String | toUpperCase() | 转换字符串中的英文字母为大写 |
int | indexOf(String str) | 返回字符串中第一次出现字符串str的位置 |
String | subString(int x,int y) | 返回该字符串从位置(索引)x开始到y的子字符串 |
static String | valueOf(X) | 将基本类型的数据X转换成字符串 |
注:valueOf()是静态(static)方法,调用时用其类名即可
double double1 = 21.5;
String str1 = String.valueOf(double1);
- 字符串与其他类型的转换
1.基本类型转换为字符串:如上
2.字符串转换为其他类型,如:
(1)转换为整型数
String strInteger = new String("10");
int nInt = Integer.parseInt(strInteger);
(2)转换为浮点型数
String strFloat = new String("3.14");
float fFloat = Float.parseFloat(strFloat);
- 动态数组类ArrayList
创建:
ArrayList <E> 变量 = new ArrayList<E> ();
类方法:
返回数据类型 | 方法 | 说明 |
boolean | add(E element) | 在数组末尾加元素element |
void | add(int index, E element) | 在index指定的位置插入元素element |
E | get(int index) | 返回index位置的元素 |
E | remove(int index) | 删除index位置的元素 |
void | set(int index, E element) | 将元素element放到位置index上,覆盖原来的元素 |
Object[] | toArray() | 取数组中的所有元素,返回值为一个数组 |
int | size() | 返回此数组中元素的个数 |
日期类
- Calendar和DateFormat类都不能被实例化,但可以通过相应的静态方法来获得实例
- Date类
Date date = new Date();//创建一个日期对象
date.getTime();//返回当前时间(长整型数)
//得到的结果不可读,需转换为可读格式。
- SimpleDateFormat类,时间格式化
格式:
EEEE - MMMM - dd - yyyy //星期几 - 月 - 日 - 年
yyyy/MM/dd
yyyy年MM月dd日HH时mm分
如:
Date date = new Date();
SimpleDateFormat dFormat = new SimpleDateFormat("EEEE/MMMM/dd/yyyy");
System.out.println(dFormat.format(date));
- Calendar类
Calendar c1 = Calendar.getInstance();//获得一个实例
/*获取当前时间*/
int year1 = c1.get(Calendar.YEAR);
int month1 = c1.get(Calendar.MONTH);
int day1 = c1.get(Calendar.DAY_of_month);
int hour1 = c1.get(Calendar.HOUR);
int minute1 = c1.get(Calendar.MINUTE);
(输出)
/*在当前天数上增加100天*/
c1.add(Calendar.DAY_OF_YEAR,100);
/*获得100天后的日期*/
int year2 = c1.get(Calendar.YEAR);
int month2 = c1.get(Calendar.MONTH);
int day2 = c1.get(Calendar.DAY_of_month);
int hour2 = c1.get(Calendar.HOUR);
int minute2 = c1.get(Calendar.MINUTE);
包装类Wrapper
将非对象包装成对象来使用。每个基本类型都对应一个包装类。
- 以便转换为引用类型,方便涉及对象的操作。
- 增加每种基本数据类型的相关属性,如最大值、最小值等,以及相应的操作方法。
Primitive Type(基本数据类型) | Wrapper Classes(对应的包装类) |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
数值计算类Math
Math类中的方法都是静态的,可直接用Math类调用该类的方法。
value = Math.cos(angle);//返回角度angle的余弦
root = Math.sqrt(num);//返回数num的平方根
dist = Math.abs(val);//返回数val的绝对值
small = Math.min(var1,var2);//返回较小的值
扫描器类Scanner
scanner放在java.util包中。常用方法如下:
返回数据类型 | 方法 | 类型 | 说明 |
无 | Scanner(InputStream source) | 构造方法 | 从指定的字节输入流中接收内容 |
boolean | hasNextInt() | 普通方法 | 判断输入的数据是否是整型数 |
boolean | hasNextFloat() | 普通方法 | 判断输入的数据是否是浮点型数 |
String | next() | 普通方法 | 接收一个字符串 |
int | nextInt() | 普通方法 | 接收一个整数 |
float | nextFloat() | 普通方法 | 接收一个浮点数 |
String | nextLine() | 普通方法 | 接收一行字符 |
代码示例:
Scanner sc = new Scanner(System.in);//创建一个Scanner类实例
int i = sc.nextInt();//调用方法nextInt()
其中System.in是标准输入流
whlie(sc.hasNextInt()) {
/* ...*/
}
//sc.hasNextInt()为条件表达式
自定义类
主动类和问题域类(PD class,Problem Domain class):主动类调用相应问题域类的方法,以实现应用系统的各种功能。
- 类定义的结构
[类修饰符] class 类名{
属性
方法
}
//类修饰符:public(表示该类具有公共的可访问性,即任何包中的类都可以使用它。)
// 什么也不写(表示该类只能被所在包的类使用)
- 声明类的属性变量
[修饰符] 类型 变量名;
//修饰符包括:
//public:公有变量,可被同一包中的所有类访问。
//private:私有变量,只能被所在类访问。
//protect:受保护变量,可被所在类和子类访问。
注:为了实现类的封装性,提高数据(属性)的安全性,通常定义为private。
- 编写类的方法成员
修饰符 返回值数据类型 方法名([形式参数列表]) {
[局部变量列表]
语句块
}
- 标准方法:取值(getter)方法和赋值(setter)方法。如:
private int radius;//类属性变量声明
/*getter*/
public int getRadius() {
return radius;
}
/*setter*/
public void setRadius(int theRadius) {
radius = theRadius;
}
注:编译器MyEclipse可自动生成
- 自定义方法:用来实现类的行为
- 构造方法(constructor):负责对象属性成员的初始化工作,为属性变量赋予合适的初值。
- 构造方法不含返回值
- 所有类至少有一个构造方法,被用来类的实例化。
- 一个类中可以定义多个构造方法,方法名相同,但形式参数列表不同。
静态变量和静态方法
一个类可以创建很多实例,每个实例都有自己的存储空间,存放自己的数据和方法。
有时需要在类中有一种变量或者方法能被所有类的实例共享。
如,记录某个类创建了多少实例,这时类中需要一个计数变量,每当创建一个实例,该变量加1.这个变量属于类的变量,所有实例共享。
在Java中称为静态变量或静态方法,用关键字static标识。
//定义静态变量
private static 数据类型 变量名;
//定义静态方法
public static 返回值数据类型 方法名([形式参数列表]);
- 静态变量和静态方法属于类所有,关键字static声明一个属性或者方法是与类相关的,而不是与类的某个特定的实例相关。因此,也称为“类变量”和“类方法”。
- 调用静态方法可直接类名调用,而不需要用实例变量名。也就是说在 调用某个类的静态变量或静态方法时,不需要先创建这个类的实例
类名.静态方法名([实际参数列表]);
方法的重载(overloading method)
类以统一的方式(或同一方法名)来处理相似任务的一种手段。
- 方法的重载:即一个类中可以定义多个方法,这些方法具有相同的名字,但具有不同的参数和不同的方法体。
- 调用时通过传递给他们的不同参数来决定具体使用哪个方法。
- “一个接口,多个方法”
- 可重载一般方法,也可重载构造方法。
- 方法的签名(signature):方法的名称,参数的顺序及其类型构成了方法的签名。
- 在类中每个方法的签名必须唯一。
- 返回数据类型对方法的签名没有影响。
异常
抛出异常、捕捉异常、处理异常
1. 检查性异常:程序正确,但因外在环境不满足而引发。
2. 运行时异常:程序存在bug。
3. 运行时错误