java-初学考前API及易错整理

这次期末考试竟然要闭卷徒手写代码,迫于分数,靠着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()+".";
    }
  • 无参构造方法能有多简单?
    —可以什么都没有,也可以:
    Rational为自己定义的有理数类
    学习了@一李 的“java中的this关键字”博客,我了解到这是java中this关键字的一种应用情况:this用在构造方法中—this(实参); 通过一个构造方法去调用另外一个构造方法(实现代码重用)
    注: this必须出现在构造方法的第一行。
    这种操作的实质是this指向当前对象;要记住,this是引用类型,保存指向自身的内存地址(即是构造出来的对象的地址)。我认为理论上更标准的形式是this.Rational(0,1);,简化为this(0,1)。

还有this需要注意的是,调用静态方法。这一点 @一李 先生说的很清楚:静态方法的调用不需要也不能通过对象,而是直接“类名.静态方法”,this本质上存的是其对应对象的指针,this一掉用就成了对象调用静态方法了。因此,this不能调用静态方法。

  • List item
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值