常用API
常用API
Math数学类
import java.util.Scanner;
public class TestMath {
public static void main(String[] args) {
System.out.println(Math.abs(-12)); // 绝对值 12
System.out.println(Math.abs(12));
System.out.println(Math.max(1,10)); // 最大值 10
System.out.println(Math.min(1,10)); // 最小值 1
System.out.println(Math.pow(3,3)); // 次方 3*3*3 27
System.out.println(Math.round(4.7)); // 四舍五入 5
System.out.println(Math.round(3.2)); // 3
System.out.println(Math.sqrt(9)); // 平方根 3
System.out.println("计算一元二次方程的解:");
Scanner sc = new Scanner(System.in);
System.out.println("请输入a:");
double a = sc.nextDouble();
System.out.println("请输入b:");
double b = sc.nextDouble();
System.out.println("请输入c:");
double c = sc.nextDouble();
double dt = Math.pow(b, 2) - 4*a*c;
if (dt < 0){
System.out.println("无解");
} else if (dt == 0){
System.out.println("次方程只有一个解");
double x = (-b) / (2*a);
System.out.println("解:"+x);
} else {
System.out.println("次方程有两个解");
double x1 = (-b+Math.sqrt(dt))/(2*a);
double x2 = (-b-Math.sqrt(dt))/(2*a);
System.out.println("解:x1="+x1);
System.out.println("解:x2="+x2);
}
}
}
运行结果:
基本数据类型包装类
byte -> Byte
short -> Short
int -> Integer
long -> Long
float -> Float
double -> Double
char -> Character
boolean -> Boolean
这些类都在 Java.lang包
包装类存在意义:
- 让基本数据类型有面向对象的特征
- 封装了字符串装换成基本数据类型的方法
public class TestClass {
public static void main(String[] args) {
// int i = 10;
// System.out.println(i+10);
// System.out.println(i.toString());// int类型没有继承Object
// 基本数据类型是没有面向对象的特征的
// Java提供基本数据类型的包装类
Integer i = new Integer(10); // 创建包装类的对象 不推荐
Integer i1 = 10; // 自动打包
System.out.println(i+20); // 在使用上,int和Integer其实没有区别
System.out.println(i1+20);
int j = i1; // 自动解包
System.out.println(j+100);
String a = "1";
String b = "1";
System.out.println(a+b); // 11
int c = Integer.parseInt(a); // 字符串转化成int唯一的方案
int d = Integer.parseInt(b);
System.out.println(c+d);
String e = "1.25";
double f = Double.parseDouble(e); // 把字符串转化成一个double
System.out.println(f*6);
String h = "1233211234567"; // 表示更大的数 Number BigDecimal
long k = Long.parseLong(h); // 把字符串转化成一个long
System.out.println(k*10);
String str = "啊哈哈哈哈哈"; // 字符串无法打包转化成字符
char g = str.charAt(0); // 获取字符第0号元素
System.out.println(g);
}
}
运行结果:
Java中的时间
Date日期
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
Date d = new Date(); // 系统时间
System.out.println(d);
System.out.println(d.getYear()+1900); // 年份从1900年开始算的
System.out.println(d.getMonth()+1); // 月份从0开始
System.out.println(d.getDate()); // 日
System.out.println(d.getHours()); // 小时
System.out.println(d.getMinutes()); // 分钟
System.out.println(d.getSeconds()); // 秒
System.out.println(d.getTime()); // 获取到时间的毫秒表示形式 返回的是long
}
}
Calendar日历
import java.util.Calendar;
import java.util.Date;
public class TestCalendar {
public static void main(String[] args) {
// Calendar cal = Calendar.getInstance();
// System.out.println(cal);
//
// cal.set(Calendar.DATE,cal.get(Calendar.DATE)+30); // 计算时间
// // cal.set(Calendar.MONTH,cal.get(Calendar.MONTH)-1); // 计算月份
//
// System.out.println(cal.get(Calendar.YEAR)); // 年
// System.out.println(cal.get(Calendar.MONTH)+1); // 月从0开始算
// System.out.println(cal.get(Calendar.DATE)); // 日
// System.out.println(cal.get(Calendar.HOUR_OF_DAY)); // 小时
// System.out.println(cal.get(Calendar.MINUTE)); // 分钟
// System.out.println(cal.get(Calendar.SECOND)); // 秒
// System.out.println(cal.getTime()); // 拿到的是Date对象
Date d = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d); // 把Date转化成Calendar
System.out.println(cal);
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.MONTH)+1);
System.out.println(cal.get(Calendar.DATE));
}
}
格式化时间
格式:yyyy-MM-dd HH:mm:ss
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test1 {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);
// SimpleDateFormat 格式化时间的工具类
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(d); // 格式化时间 string类型
System.out.println(s);
}
}
字符串转化成时间
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个事件(yyyy-MM-dd HH:mm:ss):");
String s = sc.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 有可能会输入其他 就抛出一个异常
Date d = sdf.parse(s); // 把字符串转化成时间
System.out.println(d);
}
}
运行结果:
计算时间差
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDiff {
public static void main(String[] args) throws Exception {
String s1 = "2018-01-01 12:00:00"; // 开始时间
String s2 = "2018-01-01 14:45:00"; // 结束时间
// 格式化时间的工具
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 把字符串转化成时间
Date d1 = sdf.parse(s1);
Date d2 = sdf.parse(s2);
// 转化成long类型的时间
long long1 = d1.getTime();
long long2 = d2.getTime();
long diff = Math.abs(long1 - long2); // 计算毫秒界别的时间差,求绝对值
// 秒级别的时间差
long diffSec = diff/1000;
// 分钟级别的时间差
long diffMin = diffSec/60;
// 显示成xx小时xx分钟
long diffHourDisplay = diffMin / 60; // 小时
long diffMinDisplay = diffMin % 60; // 分钟
System.out.println("您一共玩了"+diffHourDisplay+"小时"+diffMinDisplay+"分钟");
}
}
运行结果:
字符串详解
import java.util.Scanner;
public class Test {
public static void main(String[] args){
// String s = "你好啊,我叫赛利亚";
// System.out.println(s.charAt(0)); // 获取到第0个位置的字符
// s.concat("哈哈哈"); // 在字符串s上进行拼接,拼接“哈哈哈”
// System.out.println(s);
// // 字符串是不可变的数据类型
// // 几乎所有的字符串操作都会返回一个新字符串
// String s1 = s.concat("哈哈哈"); // 在字符串s上进行拼接,拼接“哈哈哈”
// System.out.println(s1);
// String s = "苍老师特别喜欢劲夫";
// System.out.println(s.contains("波多老师")); // 判断是否包含这个xxx内容
//
// System.out.println("赛利亚昨天回娘家".endsWith("娘家")); // 判断是否以xxx结尾
// System.out.println("赛利亚昨天回娘家".startsWith("赛利亚")); // 判断是否以xxx开头
// 验证码
// String verify_code = "Kmgn";
// Scanner sc = new Scanner(System.in);
// System.out.println("请输入验证码("+verify_code+")");
// String userInput = sc.nextLine();
// if (verify_code.equalsIgnoreCase(userInput)){ // 判断左右两端内容在忽略大小写的时候是否一致
// System.out.println("OK");
// }else {
// System.out.println("不OK");
// }
// String s = "你好啊";
// System.out.println(s.indexOf("啊")); // 计算给出的字符串出现的位置
// String s1 = "我的天哪123";
// System.out.println(s1.length()); // 获取字符串长度
// String s = "周杰伦特别喜欢劲夫";
// String s1 = s.replace("周杰伦","苍老师"); // 字符串替换
// System.out.println(s1);
// String s = "哈哈_呵呵_吼吼_oh";
// String[] ss = s.split("_"); // 以_切割字符串,_将消失 要放到数组里
// System.out.println(ss[0]);
// System.out.println(ss[1]);
// System.out.println(ss[2]);
String s = "今天天气针不错";
System.out.println(s.substring(2,4)); // 前闭后开区间,2能取到,4取不到
int i = 10;
System.out.println(String.valueOf(i)); // 基本数据类型变成字符串
// 野路子
System.out.println(i+"");
}
}
练习
import java.util.Scanner;
// 判断是否姓张
public class Test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的名字");
String name = sc.nextLine();
// 第一种写法
// if (name.startsWith("张")){
// System.out.println("是的");
// }else {
// System.out.println("不是");
// }
// 第二种写法
System.out.println(name.startsWith("张")?"是的":"不是");
}
}
运行结果:
public class Test2 {
// 打印字符串中每一个字符
public static void main(String[] args) {
String s = "今夜阳光明媚,今夜多云转晴";
for (int i = 0; i < s.length(); i++) {
System.out.print(s.charAt(i));
}
}
}
运行结果:
public class Test3 {
// 打印出每个学生的平均分
public static void main(String[] args) {
String[] stus = {"小绿_数学_12_语文_33_英语_42","小红_数学_25_语文_56_英语_27","小黄_数学_99_语文_88_英语_120"};
for (int i = 0; i < stus.length; i++) {
String s = stus[i];
String[] ss = s.split("_"); // 切割后 小绿,数学,12,语文,33,英语,42
String name = ss[0];
String shuxue = ss[2];
String yuwen = ss[4];
String yingyu = ss[6];
double avg = (Integer.parseInt(shuxue) + Integer.parseInt(yuwen) + Integer.parseInt(yingyu))/3.0;
DecimalFormat df = new DecimalFormat(".00");
System.out.println(name+"的平均分是"+df.format(avg));
}
}
}
运行结果:
StringBuffer和StringBuilder 可变的字符串
String 是一个不可变的数据类型
StringBuffer 和 StringBuilder 可变的字符串
public class TestStringBuilder {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder(); // 一个空字符串 ""
StringBuilder sb2 = new StringBuilder("今天的风儿甚是喧嚣");
System.out.println(sb2);
sb2.append(",今天的风儿甚是喧嚣"); // 在后面增加字符
System.out.println(sb2);
sb2.insert(3,"哈哈哈"); // 在第3位插入字符
System.out.println(sb2);
sb2.append(123);
System.out.println(sb2);
// 把StringBuilder转化成String
String s = sb2.toString();
System.out.println(s);
System.out.println("==============================");
// StringBuffer 与 StringBuilder 基本上一样只是线程上不同
StringBuilder st = new StringBuilder();
StringBuilder st2 = new StringBuilder("今天的风儿甚是喧嚣");
System.out.println(st2);
st2.append(",今天的风儿甚是喧嚣"); // 在后面增加字符
System.out.println(st2);
st2.insert(3,"哈哈哈"); // 在第3位插入字符
System.out.println(st2);
st2.append(123);
System.out.println(st2);
// 把StringBuilder转化成String
String s1 = st2.toString();
System.out.println(s1);
}
}
运行结果:
DecimalFormat 小数格式化
import java.text.DecimalFormat;
public class Test {
public static void main(String[] args) {
double d = 10/3.0;
System.out.println(d);
// . 小数点
// 0和# 表示数字
// 保留两位小数
DecimalFormat df = new DecimalFormat(".00");
String s = df.format(d);
System.out.println(s);
}
}
运行结果:
练习
import java.util.Scanner;
// 输入一个加法数学表达式
public class HomeWork {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数学表达式");
String s = sc.nextLine(); // 6+2+1
// 获取到用户输入的每一个数字
// 先去掉空格
s = s.replace(" ","");
String[] ss = s.split("\\+"); // 用+号去切割要带上\\
int sum = 0;
for(int i = 0 ; i < ss.length; i++) {
int a = Integer.parseInt(ss[i]);
sum += a;
}
System.out.println("最终的结果是:"+sum);
}
}
运行结果:
import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class HomeWork1 {
// 计算手速
public static void main(String[] args) {
System.out.println("游戏马上开始,请准备,按Enter开始");
Scanner sc = new Scanner(System.in);
sc.nextLine(); // 让程序停在这里
// 游戏开始
// 准备一个游戏结束的时间
Calendar cal = Calendar.getInstance();
cal.set(Calendar.SECOND,cal.get(Calendar.SECOND)+5);
Date end = cal.getTime(); // 结束时间
long endLong = end.getTime(); // 结束时间的时间戳(Long)
int count = 0;
while (endLong - new Date().getTime() >= 0){
sc.nextLine(); // 停一下,等待用户输入Enter
System.out.println("你按了");
count++;
}
// 计算一共按了多少次
System.out.println("您在5秒之内一共按了"+count+"次");
double pin = count/5.0; // 不加.0为int类型
// 把频率进行格式化
DecimalFormat df = new DecimalFormat(".00");
System.out.println("您的手速是:"+df.format(pin)+"次/秒");
}
}
运行结果:
任何时候开始,都为时不晚。