-
子类拥有父类非 private 的属性、方法。
构造方法赋值用super(x,y),获取单个元素用get()。
-
newInstance(): 弱类型,低效率,只能调用无参构造。
new: 强类型,相对高效,能调用任何public构造。
Class.forName(“类名”)返回的是类。
Class.forName(“类名”).newInstance() 返回的是object 。
Class c = Class.forName("Super"); //通过Class类的newInstance()方法创建对象 Super sup = (Super)c.newInstance(); //Object强转
-
getClass()方法获得Class对象,之后用getSimpleName()方法来获取这个类的名称,getName()会返回包括包名在内的实体名称。
a.getClass().getSimpleName();
-
单例对象
class Singleton { private static Singleton instance;//第一点:一个独一无二的自己的家 private Singleton() {//第二点:家里谁也进不来,都给焊死了 } public static Singleton getInstance() { //注意这里 if(instance==null) instance =new Singleton();//第三点:家里没人就造个人,才是一个完整的家 return instance; } }
-
StringBuilder的insert方法
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); StringBuilder newstr = new StringBuilder(str); //用原字符串创建可改变的字符串 for(int i = str.length() - 3; i >= 0; i -= 3){ //从末尾开始,三个三个遍历 newstr.insert(i, ','); //插入逗号 } System.out.println(newstr.toString()); //转变成String类输出 } } //h,ell,ono,wco,der
-
char转String
String s = String.valueOf('c'); String s = Character.toString('c');
-
十进制转二进制
Integer.toString(num,2); //我们可以使用Integer类的toString()方法将十进制数转换为二进制数。此方法有两个参数,第一个参数是十进制数,第二个参数是我们要转换的基数。对于二进制,基数为2。 Integer.toBinaryString(num); //这是Integer类的另一种方法,可以直接将十进制转换为二进制。
-
Calendar类——输出每个月份的天数getActualMaximum方法
//抽象类不可实例化,Calendar通过getInstance方法获取通用对象 Calendar c=Calendar.getInstance(); c.set(Calendar.YEAR,year); for(int i=0;i<12;i++){ //也可以calendar.set(year,month,0); c.set(Calendar.MONTH,i); System.out.println(year+"年"+(i+1)+"月:"+c.getActualMaximum(Calendar.DAY_OF_MONTH)+"天"); }
-
日期换算(北京纽约时间)
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Main { public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Scanner in = new Scanner(System.in); String str1 = in.nextLine(); String str2; //write your code here...... String[] info=str1.split(" "); if(info.length!=6) { System.out.println("您输入的数据不合理"); return; }else{ str2=info[0]+"-"+info[1]+"-"+info[2]+" "+info[3]+":"+info[4]+":"+info[5]; } //这里即使输入不合理,即2021 13 32 14 43 54,也会自动转换 Date d1=sdf.parse(str2); String t1=sdf.format(d1); System.out.println("北京时间为:"+t1); Date d2=sdf.parse(str2.replace(" "+info[3]+":"," "+(Integer.parseInt(info[3])-12)+":")); String t2=sdf.format(d2); System.out.println("纽约时间为:"+t2); //还有一种方法 String[] arr = str1.split(" "); if(arr.length != 6){ System.out.println("您输入的数据不合理"); }else{ String str = arr[0]+"-"+arr[1]+"-"+arr[2]+" "+arr[3]+":"+arr[4]+":"+arr[5]; Date date = sdf.parse(str); System.out.println("北京时间为:" + sdf.format(date.getTime())); //一定要精确到毫秒,且是long类型 System.out.println("纽约时间为:" + sdf.format(date.getTime() - (long)12* 60 * 60 * 1000)); } } }
-
学生成绩录入的异常处理
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int score = scanner.nextInt(); //write your code here...... try{ score=getScore(score); System.out.print(score); } catch(ScoreException e){ System.out.print(e.getMessage()); } } public static int getScore(int score) throws ScoreException{ if(score<0 || score>100) throw new ScoreException("分数不合法"); return score; } } //定义异常类 class ScoreException extends Exception { //write your code here...... public ScoreException(){ } //输入异常值 public ScoreException(String message){ super(message); } } //也可以不定义方法,直接在主函数中写 try{ if(score >= 0 && score <= 100) //正常分数输出 System.out.println(score); else throw new ScoreException("分数不合法"); //抛出异常 } catch(ScoreException str){ System.out.println(str.getMessage()); //输出异常 }
-
队列的poll、offer、peek方法
- 统计字符串中字符个数
方法一:
for(char c:line.toCharArray()){
if(c>='a'&&c<='z'||(c>='A'&&c<='Z')){
方法二:
line = line.replaceAll("[^a-zA-Z]", "");
//题目不考虑空格和特殊字符的字数,那么可以先对字符串中的空格和特殊字符进行操作,这里可以使用String类提供的字符串替换方法replaceAll()将空格以及特殊字符转化为空
- 集合排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Customer customer1 = new Customer("小明",scanner.nextInt());
Customer customer2 = new Customer("小军",scanner.nextInt());
Customer customer3 = new Customer("小红",scanner.nextInt());
List<Customer> customers = new ArrayList<>();
customers.add(customer1);
customers.add(customer2);
customers.add(customer3);
//调用排序接口
Collections.sort(customers);
System.out.println(customers);
}
}
class Customer implements Comparable<Customer>{
private String name;
private int consumption;
public Customer(String name, int consumption) {
this.name = name;
this.consumption = consumption;
}
@Override
public String toString() {
return "Customer{" +
"name='" + name + '\'' +
", consumption=" + consumption +
'}';
}
//重写compareTo()方法,按照消费额从高到低排序
@Override
public int compareTo(Customer c){
return c.consumption-consumption;
}
}
Collections工具类
Java提供了一个操作Set、List和Map等集合的工具类
Collections,该工具类提供了大量方法对集合进行排序、查询和修改等操作,还提供了将集合对象置为不可变、对集合对象实现同步控制等方法。
这个类不需要创建对象,内部提供的都是静态方法。
排序操作
方法:
static void reverse(List list): 反转列表中元素的顺序。
static void shuffle(List list) : 对List集合元素进行随机排序。
static void sort(List list) 根据元素的自然顺序对指定列表按升序进行排序
static void sort(List list, Comparator c) : 根据指定比较器产生的顺序对指定列表进行排序。
static void swap(List list, int i, int j) 在指定List的指定位置i,j处交换元素。
static void rotate(List list, int distance) 当distance为正数时,将List集合的后distance个元素“整体”移到前面;当distance为 负数时,将list集合的前distance个元素“整体”移到后边。该方法不会改变集合的长度。
- HashSet转String数组
String[] getLikeUsers=users.toArray(new String[0]);
//也可以
String[] sids = sList.toArray(new String[sList.size()]);
return list.toArray(new String[0]);//这种方式效率最高
return list.toArray(new String[100]);//浪费了100个地址空间,以及申请空间的时间
return list.toArray(new String[500]);//浪费了500个地址空间,以及申请空间的时间
new String[0]就是起一个模板的作用
ArrayList转int数组
// 将 ArrayList 转换为 int[] 数组
int[] intArr = list.stream().mapToInt(Integer::intValue).toArray();
// 在这个示例中,我们使用 Stream 对象的 mapToInt() 方法将 Integer 类型的 ArrayList 转换为 int 类型的 Stream 对象,然后再使用 toArray() 方法将其转换为 int[] 数组。在 mapToInt() 方法中,使用了 Java 8 中的方法引用 (method reference) ,即 Integer::intValue 来获取 Integer 对象的 int 值。