这次期末考试竟然要闭卷徒手写代码,迫于分数,靠着Idea自动补全功能度日的我不得不整理一下之前常用的API。
Scanner & File & PrintWriter
import java.util.Scanner;
import java.io.File;
import java.io.PrintWriter;
public static void main(String [] args) throws Exception{
//创建、写入、读取文件三件套
File file = new File("test.txt");
PrinterWriter printfile = new PrinterWriter("test.txt"/file);
//有PrintWriter对象,则要在main法头添加throws Exception
Scanner input = new Scanner("test.txt"/file);
if(file.exists()){} //exists()判定文件是否存在
Scanner input0 = new Scanner(System.in);//单纯的从控制台读取输入
//写入
printfile.println(123456789);
printfile.print(true+" "+false+" ")
printfile.close(); //写入完记得关闭
//读取
int number_Of_Characters = 0;
int number_Of_Words = 0;
int number_Of_Lines = 0;
while(input.hasNext()){ //hasNext() 检测是否还有字符
String s1 = input.nextLine(); //统计读取的那一行中的字符数
number_Of_Characters = number_Of_Characters+s1.length();
//统计行数
number_Of_Lines++;//统计单词数
Scanner input = new Scanner(s1); //给字符串创建Scanner对象,以读取字符串的内容
while(input.hasNext()){
input.next();
number_Of_Words++;
}//while
}//while
//使用try-with-source块来省去PrintWriter的close()方法
try (
PrintWriter output = new PrintWriter(file);
) {
output.print();
}
}//main
Arrays
import java.util.Arrays;
int [] array = new int[100]; //声明一维数组
double[][] a = new double[row][column];//声明二维数组,用的少
Arrays.binarySearch(array,int a);//二分查找
int a = array.length; //数组名直接调用length长度
Arrays.sort(array); //给array中的元素排序
public static int[] divided(){//数组作为函数返回值
int [] result = new int[100];
---
---
return result;
}
ArrayList
import java.util.ArrayList;
ArrayList<String> students = new ArrayList<String>(); //声明
students.add(student:String); //增加元素个数
int i = students.indexOf(student:String); //查找元素位置
students.remove(i); //删除元素
String & Character
String password = input.nextLine();
int a = password.length();//无需导入String包,直接用
for (int i = 0;i < password.length();i++){
char tool_char = password.charAt(i);
if (Character.isDigit(tool_char)){ //检测一个字符是否为数字
numberOfDigit++;
}
if (!Character.isLetterOrDigit(tool_char)){ //检测一个字符是否为数字或字母
degit_or_letter = false;
break;
}
//其实还有Character.isLetter(a:char)检测是否为字母
}
Math
Math.min(a,b);Math.max(a,b); //大小值
Math.pow(a,b);//a的b次方
Math.PI;//常量π
1+(int)(Math.random()*101);产生1-101的随机整数
Math.sqrt(a);//a开平方,开立方开平方其实也可以用pow()代替
Math.abs(a);//返回abs的绝对值
抛出异常
//代码不重要,主要看语法格式-------就地捕获
try {
int num1 = Integer.parseInt(cin());//Integer.parseInt()解析字符串,并转化为整数
int num2 = Integer.parseInt(cin());
System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
isRight = false;
} catch (NumberFormatException ex) {/**到此发现异常是Integer的parseInt方法抛出的*/
System.out.print("Please enter two INTEGERS: ");
ex.printStackTrace();
}
/***********************************/
try {
int index = Integer.parseInt(cin());
if (index > 99||index < 0){
throw new ArrayIndexOutOfBoundsException("数组下标越界");
//该语句创建并抛出异常对象ArrayIndexOutOfBoundsException,括号里的字符串是传给异常构造方法的参数
}
}
catch (ArrayIndexOutOfBoundsException ex2) {
System.out.println(ex2);
System.out.print("Out of bounds.\nPlease enter an index less than 100: ");
//打印出的ex2便是“数组下表越界”
}
接口
//实现一个接口,注意Comparable接口的<>内的内容
class ComparableCircle extends Circle implements Comparable<ComparableCircle>{
@Override
public int compareTo(ComparableCircle o){
if (getArea()< o.getArea()){
return -1;
}else if (getArea() == o.getArea()){
return 0;
}
else{
return 1;
}//else
}//compareTo
}//class
//自己写一个接口
interface Colorable{
String howToColor();
}
//就这么简单
接口注意一下,内部成员包括静态常量、抽象的方法,而且都必须是public声明。
但是,在编辑的时候我们可以省去定义静态和常量的“static final”,直接int a = 1;即可
其它需要注意的地方
public static final int MEDIUM = 2; //静态常量声明
((Student) student1).setGrade(freshman); //类型强制转换
if(p instanceof Student) ...; //判定是谁的对象 "instanceof"
@Override //重载的方法记得写上 @Override
public String toString(){
return "三边长:"+getSide1()+", "+getSide2()+", "+getSide3()+"."+
"\n周长:"+getPerimeter()+".\n"+
"面积:"+getArea()+".";
}
- 无参构造方法能有多简单?
—可以什么都没有,也可以:
学习了@一李 的“java中的this关键字”博客,我了解到这是java中this关键字的一种应用情况:this用在构造方法中—this(实参); 通过一个构造方法去调用另外一个构造方法(实现代码重用)
注: this必须出现在构造方法的第一行。
这种操作的实质是this指向当前对象;要记住,this是引用类型,保存指向自身的内存地址(即是构造出来的对象的地址)。我认为理论上更标准的形式是this.Rational(0,1);
,简化为this(0,1)。
还有this需要注意的是,调用静态方法。这一点 @一李 先生说的很清楚:静态方法的调用不需要也不能通过对象,而是直接“类名.静态方法”,this本质上存的是其对应对象的指针,this一掉用就成了对象调用静态方法了。因此,this不能调用静态方法。
- List item