一些JAVA基础知识

  • 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对象的两种方法
    1. String myString = “Hello World”;
    2. 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
  • 编写类的方法成员
修饰符 返回值数据类型 方法名([形式参数列表]) {
    [局部变量列表]
    语句块
}
  1. 标准方法:取值(getter)方法和赋值(setter)方法。如:
private int radius;//类属性变量声明

/*getter*/
public int getRadius() {
    return radius;
}

/*setter*/
public void setRadius(int theRadius) {
    radius = theRadius;
}

注:编译器MyEclipse可自动生成
  1. 自定义方法:用来实现类的行为

  2. 构造方法(constructor):负责对象属性成员的初始化工作,为属性变量赋予合适的初值。

    • 构造方法不含返回值
    • 所有类至少有一个构造方法,被用来类的实例化。
    • 一个类中可以定义多个构造方法,方法名相同,但形式参数列表不同。

静态变量和静态方法

一个类可以创建很多实例,每个实例都有自己的存储空间,存放自己的数据和方法。
有时需要在类中有一种变量或者方法能被所有类的实例共享

如,记录某个类创建了多少实例,这时类中需要一个计数变量,每当创建一个实例,该变量加1.这个变量属于类的变量,所有实例共享。

在Java中称为静态变量或静态方法,用关键字static标识

//定义静态变量
private static 数据类型 变量名;
//定义静态方法
public static 返回值数据类型 方法名([形式参数列表]);
  • 静态变量和静态方法属于类所有,关键字static声明一个属性或者方法是与类相关的,而不是与类的某个特定的实例相关。因此,也称为“类变量”和“类方法”。
  • 调用静态方法可直接类名调用,而不需要用实例变量名。也就是说在 调用某个类的静态变量或静态方法时,不需要先创建这个类的实例
类名.静态方法名([实际参数列表]);

方法的重载(overloading method)

类以统一的方式(或同一方法名)来处理相似任务的一种手段。
- 方法的重载:即一个类中可以定义多个方法,这些方法具有相同的名字,但具有不同的参数和不同的方法体
- 调用时通过传递给他们的不同参数来决定具体使用哪个方法。
- “一个接口,多个方法”
- 可重载一般方法,也可重载构造方法。
- 方法的签名(signature):方法的名称参数的顺序及其类型构成了方法的签名。
- 在类中每个方法的签名必须唯一。
- 返回数据类型对方法的签名没有影响。

异常

抛出异常、捕捉异常、处理异常
1. 检查性异常:程序正确,但因外在环境不满足而引发。
2. 运行时异常:程序存在bug。
3. 运行时错误

猜你喜欢

转载自blog.csdn.net/weixu1999/article/details/81043083