JAVA 总复习

Posted 钟钟终

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 总复习相关的知识,希望对你有一定的参考价值。

易错考点:
1.通过类名不可以调用实例方法,可访问静态成员。
2.通过对象名可以访问静态成员,和非静态成员。
3.静态方法不能直接调用非静态方法,而实例方法可访问静态方法。

4.自定义类时不允许定义如下方法public void toString() 。
因为toString方法是内置在Object中的方法,重写的方法必须和父类一模一样。

重载:1.在同一个类中。2.方法名必须相同。3.与修饰符和返回值无关,不能修改。4.可修改参数列表,通过改变参数的类型、顺序、个数)进行重载。

重写:1.必须和父类方法一模一样。2.子类的方法权限必须大于等于父类的方法权限。

基础知识点:

import java.awt.print.Printable;
import java.util.Arrays;
import java.util.Scanner;

class Main
	public static void main(String[] args) 
		double a=3.1415926; 
		System.out.printf("%.4f",a);  //C语言输出
		
		Scanner sc=new Scanner(System.in);
		int b=sc.nextInt();
		sc.nextLine();  //吸收换行符及本行之后字符
		String s=sc.nextLine();
		System.out.println(b+" "+s);
		
		int[] c=new int[] 1,2,3,4,5;
		System.out.println(Arrays.toString(c));  //数组转化为String类型输出
		int[] d=Arrays.copyOf(c, 3);
		System.out.println(Arrays.toString(d));
		
	

自定义异常类:


class Main
	public static void main(String[] args) throws Myexception   //抛出自己写的异常
		Scanner sc=new Scanner(System.in);
		int a=sc.nextInt();
		
		if(a>0)
			System.out.println("输入年龄合法。");
		else 
			throw new Myexception("非法年龄");
		
		
	

class Myexception extends Exception

	public Myexception() 
		// TODO Auto-generated constructor stub
	
	Myexception(String s)
		super(s);
	

常用系统类

public class Main 
	public static void main(String[] args) 
		int a=Integer.parseInt("123",8);  //其他进制转化为十进制,返回类型为整数类型
		System.out.println(a);
		
		String b=Integer.toString(83,8);  //十进制转化为其他进制,返回类型为String
		
		int b1=Integer.parseInt(b);		  //字符串转为其他类型
		System.out.println(b1);
		
		String s="abcdefgh";
		s=s.replace("a", "b");   //替换
		int k=s.indexOf("bdd");  //查询子串
		System.out.println(k);
		System.out.println(s);
		
		StringBuffer s1=new StringBuffer(s);  //转为Stringbuffer,可变字符串
		s1.append("ttt");
		System.out.println(s1);
		System.out.println(s1.reverse());	//翻转
		s1.replace(0, 3, "aaa"); //指定范围(左闭右开)替换
		System.out.println(s1);
		s1.toString();
		System.out.println(s1+"-------------");
		
		BigInteger x=new BigInteger("123456789");  //大数计算
		BigInteger y=new BigInteger("123456789");
		BigInteger z=x.multiply(y);
		System.out.println(z);
		
		double g=3.1415926;
		System.out.printf("%5.2f\\n",g);   //日期格式化
		Date now=new Date();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy:MM:dd hh:mm:ss");
		System.out.println(sdf.format(now));
		
		Calendar calendar=Calendar.getInstance();
		System.out.println(calendar.getTime());
		System.out.println(sdf.format(calendar.getTime()));
	


栈的应用 括号匹配

public class Main 
	public static void main(String[] args) 
		Scanner sc=new Scanner(System.in);
		Stack<Character> st=new Stack<>();
		String s=sc.next();
		int flag=0;
		for(int i=0;i<s.length();i++) 
			if(s.charAt(i)=='('||s.charAt(i)=='[')
				st.push(s.charAt(i));
			else 
				if(st.empty()==true)
					flag=1;
					break;
				
				Character c=st.pop();
				if(s.charAt(i)==')'&&c=='(')
					continue;
				else if(s.charAt(i)==']'&&c=='[')
					continue;
				else 
					flag=1;break;
				
			
		
		if(st.empty()==true&&flag==0)
			System.out.println("YES");
		else 
			System.out.println("NO");
		
	

Set集合中只有TreeMap才可以自定义排序

无法使用Collections.sort

public class Main 
	public static void main(String[] args) 
		Scanner sc=new Scanner(System.in);
		Stu s1 = new Stu("20170001", "张三", 90);
        Stu s2 = new Stu("20170003", "王五", 78);
        Stu s3 = new Stu("20170002", "李四", 85);
        Stu s4 = new Stu("20170001", "张三", 90);
        Set<Stu> set=new TreeSet<>();
        set.add(s1);
        set.add(s2);
        set.add(s3);
        set.add(s4);
        for(Stu s:set)
        	System.out.println(s);
	

class Stu implements Comparable<Stu>

	private String sno;
	private String sname;
	private int score;
	public Stu(String sno, String sname, int score) 
		super();
		this.sno = sno;
		this.sname = sname;
		this.score = score;
	
	
	@Override
	public int hashCode() 
		return Objects.hash(sno);
	

	@Override
	public boolean equals(Object obj) 
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Stu other = (Stu) obj;
		return Objects.equals(sno, other.sno);
	

	@Override
	public String toString() 
		return "sno=" + sno + " sname=" + sname + " score=" + score;
	
	@Override
	public int compareTo(Stu o) 
		// TODO Auto-generated method stub
		return o.sno.compareTo(this.sno);
	
	

List排序四种方式:
1.类实现接口Comparable,内部定义CompareTo方法,Collections进行排序。
2.定义比较器类,定义排序规则
3.自定义类写成匿名类的形式。
4.lambda表达式,适用于简单的排序方式。

对map进行排序的方式

1.定义好map的数据。
2.将map中的Map.Entry放到list容器中,调用匿名类进行排序。

int n=sc.nextInt();
        Map<Integer, Integer> map = new LinkedHashMap<Integer, Integer>();
        for(int i=1;i<=n;i++)
        
            String s=""+i;
            StringBuffer s1 = new StringBuffer(s);
            String s2=s1.reverse().toString();
            int tmp= Integer.parseInt(s2);
            map.put(i,tmp);
        
        List<Map.Entry<Integer,Integer>> list = new ArrayList<Map.Entry<Integer,Integer>>(map.entrySet());
        Collections.sort(list,new Comparator<Map.Entry<Integer,Integer>>() 
            
            public int compare(Map.Entry<Integer, Integer> o1,
                               Map.Entry<Integer, Integer> o2) 
                if(o1.getValue()==o2.getValue())
                    return o1.getKey()-o2.getKey();
                return o2.getValue()-o1.getValue();
        

类和对象 例题

public class Test 
	public static void main(String[] args) 
		Circle c=new Circle(3);
		System.out.println(c.toString());
		Rectangle r=new Rectangle(7, 5);
		System.out.println(r.toString());
	

interface ShaprArea 
	double getArea();
	double getPerimeter();


class Circle implements ShaprArea

	double r,area,per;
	Circle() 
	Circle(double r)
		this.r=r;
		area=r*r*Math.PI;
		per=2*r*Math.PI;
	
	@Override
	public double getArea() 
		return area;
	
	@Override
	public double getPerimeter() 
		return this.per;
	
	@Override
	public String toString() 
		return "半径=" + r + ", 面积=" + String.format("%.2f", area) + ", 周长=" + String.format("%.2f", per) ;
	

class Rectangle implements ShaprArea

	int w,l,area,per;
	public Rectangle(int w,int l) 
		this.w=w;
		this.l=l;
		this.area=w*l;
		this.per=2*(w+l);
	
	@Override
	public double getArea() 
		return area;
	

	@Override
	public double getPerimeter() 
		return per;
	
	@Override
	public String toString() 
		return "Rectangle [w=" + w + ", l=" + l + ", area=" + area + ", per=" + per + "]";
	
	

输入输出 利用数组


 
public class Test 
    public static void main(String[] args) throws Exception 
    	/* 字符输入流,用字符数组
        FileReader fr=new FileReader(new File("e:/1.txt"));
        FileWriter fw=new FileWriter(new File("e:/2.txt"));
        char[] c=new char[10];
        int len=0;
        while((len=fr.read(c))!=-1)
        	
        	fw.write(c,0,len); //从下标为0地方开始写,长度为本次读取的len
        
        fr.close();
        fw.close();
        */
    	InputStream is=new FileInputStream(new File("e:/1.txt"));
    	OutputStream os=new FileOutputStream(new File("e:/2.txt"),true);
    	byte[] by=new byte[1023];
    	int len=0;
    	while((len=is.read(by))!=-1) 
    		System.out.println(len);
    		os.write(by,0,len);
    	
    	is.close();
    	os.close();
    


以上是关于JAVA 总复习的主要内容,如果未能解决你的问题,请参考以下文章

Java总复习内容

穷吉201771010119总复习

JAVA总复习-----1

实验十八 总复习

JAVA 总复习

Java年度总复习基础部分