Educoder-Java面向对象 - 常用类(参考)

难度一般,很多都是前面学过的方法,拿过来用就行了

掌握知识点

第一关

  • equals()方法,判断地址是否相同

第二关

  • 随便看看就行了

第三关

  • substring()方法
  • indexOf()方法
  • toUpperCase()方法

第四关

  • Random类
  • Random种子
  • ints().toArray()方法

第五关

  • Date类
  • SimpleDateFormat类
  • parse()方法,格式化日期
  • getTime()方法,获得毫秒

第六关(输出写在一行了,我故意的 )

  • Math函数全部用法

通关源码

第1关:Object类

package case1;

import java.util.Scanner;

public class ObjectTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        // 在测试类中创建Demo类对象d1,传入输入值num1, d1调用toString方法并打印输出该值
        // 创建Demo类对象d2,同样传入输入值num1,打印判断d1和d2是否相等(实际是比较地址)
        /********* Begin *********/
        Demo d1 = new Demo(num1);
        System.out.println(d1.toString());

        Demo d2 = new Demo(num1);
        System.out.println(d1.equals(d2));
        /********* End *********/
        // 创建Person类对象p,传入输入值num2,打印判断d1和p是否相等(实际是比较地址)
        /********* Begin *********/
        Person p = new Person(num2);
        System.out.println(d1.equals(p));
        /********* End *********/
    }
}

class Demo {
	private int num;

	public Demo(int num) {
		this.num = num;
	}

	public boolean equals(Object obj) // Object obj = new Demo()
	{
		if (!(obj instanceof Demo)) // 判断obj是否和Demo是同类
			return false;
		Demo d = (Demo) obj; // 将父类的引用(Object)向下转换为子类(Demo)
		return this.num == d.num;
	}

	public String toString() {
		return "Demo:" + num; // 返回对象的值(每一个对象都有自己的特定的字符串)
	}
}

class Person {
	private int num;

	public Person(int num) {
		this.num = num;
	}
}

在这里插入图片描述

第2关:JAVA基础类型包装类-练习

package case2;

import java.util.Scanner;

public class WrapperTest {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int aa = sc.nextInt();
		String bb = sc.next();
		int c = sc.nextInt();
		String str11 = sc.next();
		String str22 = sc.next();
		// 包装类中“==”与equals的用法比较
		// 值得注意的是,包装类中的equals方法和String类一样,都是重写了Object类中的equals方法,因此比较的是内容而不是地址,
		// 而“==”比较的依然是引用变量的地址,只是当包装类型和与之相对应的基本类型进行“==”比较时会先做自动拆箱处理。
		/********* Begin *********/
		Integer a = new Integer(aa);
		Integer b = new Integer(bb);
		//c、aa、bb、c对应的数值相等

		String str1 = new String(str11);
		String str2 = new String(str22);
		//str1和str2对应的内容相等

		System.out.println(a == b);
		System.out.println(a == c);
		System.out.println(b == c);
		System.out.println(a.equals(b));
		
		System.out.println(str1 == str2);
		System.out.println(str1.equals(str2));
		
	}
}

在这里插入图片描述

第3关:String&StringBuilder&StringBuffer类-练习

package case3;

import java.util.Scanner;

public class StringTest {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
        // 在java api 中,通常使用两个数字表示范围时,都是含头不含尾,即包含起始下标对应的内容,但不包含结束下标的处对应的内容 
		String get = str.substring(12);	//从第12索引值开始截取

		int index = get.indexOf(".");	//从get值得第1点下标

		String get2 = get.substring(0,index);	//从开始截取到第一个点为止

		System.out.println(get2 + "\n" + get2.toUpperCase());	//输出get2换行转写大写
		
	
	}
}

在这里插入图片描述

第4关:Random类

package case4;

//密码的自动生成器:密码由大写字母/小写字母/数字组成,生成六位随机密码
import java.util.Random;
import java.util.Scanner;
import java.util.Arrays;


public class RandomTest {
    public static void main(String[] args) {
        // 定义一个字符型数组
        char[] pardStore = new char[62];
        // 把所有的大写字母放进去 把所有的小写字母放进去 把0到9放进去
        /********* Begin *********/
        char number = 48;
        char upper = 65;
        char loser = 97;

        for(char i = 0; i < 26; i++){

            pardStore[i] = (char) (upper + i);

        }

        for(char i = 26; i < 52; i++){
            pardStore[i] = (char) (loser + i - 26);
        }

        for(char i = 52; i < 62; i++){
            pardStore[i] = (char)(number + i - 52);
        }

        //测试
        // System.out.println(Arrays.toString(pardStore));

        Scanner sc = new Scanner(System.in);
        int seed = sc.nextInt();
        /********* Begin *********/
        Random r = new Random(seed);

        int[] arr = new int[6];                //random只能获得整型,所以用int数组

        arr = r.ints(6,0,62).toArray();     //只能获得整型,随机获得6个数据,从0到61中

        for(int i = 0; i < arr.length; i++){
            System.out.print(pardStore[arr[i]]);    //arr[i]作为pardStore索引输出
        }
    }
}

在这里插入图片描述

第5关:Date类和SimpleDateFormat类的用法

package case5;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class DateTest {
	public static void main(String[] args) throws ParseException {
		// 键盘录入你的出生年月日 格式为yyyy-MM-dd
		// 把该字符串转换为一个日期
		// 通过该日期得到一个毫秒值
		// 获取2020年10月1日的毫秒值
		// 两者想减得到一个毫秒值
		// 把该毫秒值转换为天 打印输出
		Scanner sc = new Scanner(System.in);
		String line = sc.nextLine();

		SimpleDateFormat input = new SimpleDateFormat("yyyy-MM-dd");	//注意,m必须大写,具体原因尚不清楚
		Date date = input.parse(line);					//输入日期
		Date date2 = input.parse("2020-10-1");			//截止日期
		long time = date2.getTime() - date.getTime();	//获得毫秒,存储在long中
		
		//毫秒除以1000 * 3600 * 24得到天
		System.out.print("你的出生日期距离2020年10月1日:" + time/1000/3600/24 + "天");
	}
}

在这里插入图片描述

第6关:Math类

package case6;

import java.util.Scanner;
import java.lang.Math;

public class MathTest {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a1 = sc.nextInt();
		int a2 = sc.nextInt();
		int a3 = sc.nextInt();
		int a4 = sc.nextInt();
		double a5 = sc.nextDouble();
		double a6 = sc.nextDouble();
		double a7 = sc.nextDouble();
		double a8 = sc.nextDouble();
		double a9 = sc.nextDouble();
		double a10 = sc.nextDouble();
		double a11 = sc.nextDouble();
		/********* Begin *********/
		System.out.println(Math.sqrt(a1) + "\n" + Math.cbrt(a2) + "\n" + Math.pow(a3,a4) +
			"\n" + Math.max(a5,a6) + "\n" + Math.min(a5,a6) + "\n" + Math.abs(a7) + "\n" +
			Math.ceil(a8) + "\n" + Math.floor(a9) + "\n" + Math.rint(a10) + "\n" + Math.round(a11));
		
		/********* End *********/
	}
}

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼鬼骑士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值