一.常用API概述:
1.数学类
2.包装类
3.时间类
4.字符串
5.StringBuilder和StringBuffer
6.DecimalFormat
二.Math数学类
abs();获取到绝对值
max();最大值
min();最小值
pow();求次幂
round();四舍五入
sqrt();求平方根
…
一元二次方程如何解:
package API.MathClass;
import java.util.Scanner;
public class TestMath {
public static void main(String[] args) {
// System.out.println(Math.abs(-12));//绝对值
// System.out.println(Math.abs(12));
//
// System.out.println(Math.max(2,12));//最大值
// System.out.println(Math.min(97,122));//最小值
//
// System.out.println(Math.pow(3,3));//幂次方
// System.out.println(Math.round(4.6));//四舍五入
//
// System.out.println(Math.sqrt(9));//平方根
System.out.println("计算一元二次方程");
Scanner sc = new Scanner(System.in);
System.out.println("请输入a:");
double a = sc.nextInt();
System.out.println("请输入b:");
double b = sc.nextInt();
System.out.println("请输入c:");
double c = sc.nextInt();
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="+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.long包
包装类存在的意义:
1.让基本数据类型有面向对象的特征
2.封装了字符串转化成基本数据类型的方法()、
Integer.parseInt()
Long.parsLong()
Double.parseDouble()
package API.Pake;
public class Test {
public static void main(String[] args) {
// int i = 10;
//
// System.out.println(i+10);
// System.out.println(i.toString());//int类型没有继承Object
//基本数据类型是没有面向对象特征的。
//Java提供基础数据类型的包装类。
//1.让基本数据类型有面向对象的特征
/*Integer i = new Integer(10);//创建包装类的对象
Integer ii = 10;
System.out.println(i+20);//在使用上,int和Integer其实没区别
System.out.println(ii+20);
int j = ii;//自动解包
System.out.println(j+100);
*/
//2.封装了字符串转化成基本数据类型的方法(重点)
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 str = "哈哈哈哈";
char x = str.charAt(1);
System.out.println(x);
Long l =Long.parseLong("12233142111113");
System.out.println(l);
}
}
三.Java中的时间
Date 日期
new Date()可以获取到系统时间
getTime()能获取到时间的long的表示形式,可以用来计算时间差
package API.Date;
import java.util.Date;
public class Test {
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());//17
System.out.println(d.getHours());//小时
System.out.println(d.getMinutes());
System.out.println(d.getSeconds());
//重点
System.out.println(d.getTime());//获取从1970年1月1日到现在的毫秒时间
}
}
Calendar 日历
get()获取到时间的某一个部分
set()设置时间—–>计算时间
package API.Date;
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);//加时间
// System.out.println(cal.get(Calendar.YEAR));//年
// System.out.println(cal.get(Calendar.MONDAY)+1);//月
// 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 d = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d);//把Date转化成Calender
System.out.println(cal);
System.out.println(cal.get(Calendar.YEAR));//年
System.out.println(cal.get(Calendar.MONDAY)+1);//月
System.out.println(cal.get(Calendar.DATE));//日
}
}
四.格式化时间
Date ,Calendar
SimpleDateFormat:帮我们格式化时间的工具类
java.text
package API.Simple;
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 sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(d);//格式化时间
System.out.println(s);
}
}
格式:yyyy-MM-dd HH:mm:ss
format(Date)帮我们把时间转化成字符串
parse(String)把字符串转化成时间
package API.Simple;
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 ParseException {
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);
}
}
五.计算时间差
package API.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDiff {
public static void main(String[] args) throws ParseException {
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; //105分钟
//显示成xxx小时xxx分钟
long diffHourDisplay = diffMin/60;
long diffMinDisplay = diffMin%60;
System.out.println("您一共玩了"+diffHourDisplay+"小时"+diffMinDisplay+"分钟");
}
}
六.字符串详解
“字符串”
字符串是一个不可变的数据类型,会返回新字符串而不是在原有基础上修改
package API.Str;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
String s = "我是你爸爸";
System.out.println(s.charAt(0));
//在字符串s上进行拼接,拼接“哈哈哈”
s.concat("哈哈哈");
System.out.println(s);
//字符串是不可变的数据类型。
//几乎所有的字符串操作都会返回一个新字符串
String s1 = s.concat("哈哈哈");
System.out.println(s1);
//判断字符串所含内容
String s2 = "小吴吃不胖";
System.out.println(s2.contains("小吴"));
//判断以xxx结尾
System.out.println("小潘昨天生气了".endsWith("了"));
//判断以xxx开头
System.out.println("小潘今天没生气".startsWith("小潘"));
//验证码
String verify_code = "Kmqn";
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 s = "我的天哪123";
System.out.println(s.length());
//字符串替换
String s = "小潘特别喜欢小吴";
String s1 = s.replace("小潘","小王");
System.out.println(s1);
//切割字符串
String s = "哈哈_呵呵_吼吼_哦no";
String[] ss= s.split("_");
System.out.println(ss[0]);
System.out.println(ss[1]);
System.out.println(ss[2]);
System.out.println(ss[3]);
//前闭后开区间,2取到,4取不到
String s = "今天天气还不错";
System.out.println(s.substring(2,4));
//去掉左右两端的空格
String s = " 哈 哈 ";
System.out.println(s.trim());
int i = 10;
System.out.println(String.valueOf(i));
//野路子
System.out.println(i+"");
}
}
小练习
1.判断某个人是不是姓张
package API.Str;
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();
// System.out.println(name.startsWith("张")?"是的":"不是");//三元运算符
String name = sc.nextLine();
if(name.startsWith("张")){
System.out.println("是的");
}else{
System.out.println("不是");
}
}
}
2.打印字符串中每一个字符
package API.Str;
//打印字符串中每一个字符
public class Test2 {
public static void main(String[] args) {
String s = "今夜阳光明媚,多云转晴";
//charAt()
for (int i = 0;i<s.length();i++){
System.out.println(s.charAt(i));
}
}
}
3.有如下学生信息,请计算并打印出每个学生的平均分
package API.Str;
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++){//数组length是没有括号的
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;
System.out.println(name+"的平均分是"+avg);
}
}
}
StringBuffer和StringBuilder
String是一个不可变的数据类型
“哈哈”+“呵呵”+“吼吼”
StringBuffer和StringBuilder可变字符串(用法一模一样,线程处不一样)
package API.Str;
public class TestStringBulider {
public static void main(String[] args) {
StringBuilder sb= new StringBuilder();//一个空字符串""
StringBuilder sb1= new StringBuilder("王二麻子的麻子特别麻");
System.out.println(sb1);
sb1.append(",李二麻子的麻子也很麻");
System.out.println(sb1);
sb1.insert(3,"哈哈哈");
System.out.println(sb1);
sb1.append(123);
System.out.println(sb1);
//把StringBuilder转化成String
String s = sb1.toString();
System.out.println(s);
}
}
DecimalFormat
Java格式化数字
package API.Decimal;
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);
}
}
作业:
1.让用户输入一个数学表达式,3+6+9+18,用编程完成计算
package API.HomeWork;
import java.util.Scanner;
public class Day01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字表达式");
String s = sc.nextLine();
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);
}
}
2.计算手速。
package API.HomeWork;
import com.sun.org.apache.bcel.internal.generic.CALOAD;
import javax.jws.soap.SOAPBinding;
import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Day02 {
public static void main(String[] args) {
System.out.println("游戏准备就绪请按Entel开始");
Scanner sc = new Scanner(System.in);
String s = 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("您在20秒内一共按了"+count+"次");
double pin = count/5.0;
//把频率进行格式化
DecimalFormat df = new DecimalFormat(".00");
System.out.println("您的手速"+df.format(pin)+"次/秒");
}
}