public class API{
public static void main(String[] args) {
/*-----------字符串的基本知识------------
/*生成对象的两种方式
String strA = "hello";
String strB = new String("hello");//新定义一块内存
String strC = "hello";//将指针直接指向 strA 已拥有的对象,不用再新定义
/*字符串的两种比较方式
System.out.println(strA == strB);//比较地址
System.out.println(strA.equals(strB));//比较内容(有方法可以忽略大小写->验证码)
System.out.println(strA.compareTo("Hello"));//返回两个字符串中第一个不同字符的 ASCII 编码差(同样可以忽略大小写)使用+可以对字符串进行连接操作
在字符串里面有特殊字符,需要转义字符‘\’
字符串的不可变性。当我们执行修改它的时候,会生成新字符串
/*------------String 常用方法1-------------
/*字符串内容判断:
strA.startWith("he")//判断字符是否以 he 开头/同理还有 endWith
/*字符串查找:
strA.contains("ell")//返回布尔值
strA.indexOf("ell")//返回 ell 在 strA 中的位置
strA.indexOf("ell",3)//跳过前3个字符
strA.lastIndexOf("l")//最后出现l的位置
/*字符串截取:
str.substring(4)//截取从第 4 到末尾的字符
str.substring(4,7) //截取从第 4 到第 7 个字符,即包头不含尾
/*字符串替换:
str.replaceFirst("o","-") //替换第一个 o 为-;
str.replaceAll("o","-") //和 replace 效果一样,但是它符合正则
/*字符串拆分:
str.split("") // 按照标准拆分为数组
str.split("",2) // 指定从头拆分为长度为2的数组
/*获取指定下标的字符
str.charAt(4) // 获取下标为 4 的字符
/*获取字符串的长度
str.length() // 汉字算一个字符,和数组长度的区别,数组是属性,字符串是方法
/*判断字符串是否为空
str.isEmpty() // 返回布尔值(也可用长度和 equals 来判断)
/*把字符串转大小写
str.toUpperCase() // 转为大写
str.toLowerCase() // 转为小写
/*去掉字符串中空格
str.trim() 可以去掉两端的空格
/*字符串连接
+ 最常用
str.concat("!"); //参数为后面要加的字符
/*字符串与其他类型相转换
str.toCharArray() //转换为 char 数组(可检查密码中是否有大小写)
String.valueOf(a) //把对象 a 转化为新字符串
/*-----------------包装类的使用------------------------*/
Byte //字节
Short //短整型
Integer //整型
Long //长整型
Double //双浮点型
Float //浮点型
Character //字符型
Boolean //布尔型
包装类可以表示空,基础类型不能表示空
//装箱操作:将基础数据放置到包装类的过程
int x = 1;
Integer i1 = new Integer(x); //构造方法
Integer i2 = Integer.valueOf(2) //静态方法
//拆箱操作
int r1 = i1.intValue;
double r2 = i1.doubleValue;
*注*
jdk1.5 后可以执行自动装箱和拆箱(也就是不同类型可以混用)
/*包装类的静态属性
Integer.MAX_VALUE //最大值
Integer.MIN_VALUE //最小值
Integer.BYTES //位
Integer.SIXE //int 占用的位
Integer.toBinaryString(int1) //将 int1 转换为二进制数据,以字符串打印
Integer.toHexString(int) //八进制
Boolean.parseBoolean(str) //将 str 转化为 boolean 值(如果 str==“true”,那么就为真)
/*比较
1.看是不是==或 !=来比较的,如果不是,只看内容就行
2.如果是,先看运算符两边是不是对象,如果不都是,比较的也只是内容
3.如果不是,那么看两个引用有没有指向同一个对象
/*--------math 类-----------
/*math 类有 final 所以他不能有子类
Math.PI // π
/*数字舍入
Math.pow(2,3) //次方计算,2的3次方
Math.round(15.5) //四舍五入,得到16,进行整数
Math.round(-15.5) //得到-15对负数进行退位
Math.round(-15.5) //得到-16,以0.5为界
*保留任意位数小数方法*
prublic double accrateRound(double a , int scale){
double temp1 = a * Math.pow(10,scale);
double temp2 = Math.round(temp1);
double result = temp2/Math.pow(10.0,scale);
return result;
}
/*大数字处理
Long.MAX_VALUE // long 的最大表示范围:9223372036854775807
String num1 = "3564566511";
String num2 = "546464646";
BigInteger big1 = new BigInteger(num1);
BigInteger big2 = new BigInteger(num2);
big1.add(big2) //加
big1.subtract(big2) //减
big1.multiply(big2) //乘
big1.divide(big2) //除
BigInteger[] result = big1.divideAndRemainder(big2); //除,并且取余,放在一个数组里
//如果是浮点数(BigDecimal)除法需要重载方法,设定保留小数位数(BigDecimal.ROUND_HALF_UP代表四舍五入)
针对整型小数无法正常表示,可以用大数字来做
*在这做一个浮点乘法方法*
public double accrateMutiply(double a,double b){
String str1 = String.valueOf(a);
String str2 = String.valueOf(b);
BigDecimal big1 = new BigDecemal(str1);
BigDecimal big2 = new BigDecemal(str2);
double result = big1.multiplt(big2).doubleValue();
return result;
}
/*-------Random 类的使用--------
/*创建随机数
Random rd = new Random();
double d = rd.nextDoule(); //范围在0-1之间,可以等于0.
int d1 = rd.nextInt(); //范围是 int 的取值范围
如果有种子(就是构造方法里面的参数),那么产生的数字将固定
可以产生一个随机数数组
1. int[] array = new int[5];
rd.nextInts(array);//可以产生范围为 int 的随机序列
(jdk1.8)2. IntStream is = rd.ints(10,0,100); //产生了一个随机序列,10个,最小值0,小于100。
int[] array = is.toArray(); //转换为数组
/*--------日期时间的学习--------
/*date创建(不提倡使用)
date d1 = new Date(108,7,8,20,0,0)d1.setYear(); // 也可以用
Date d = new Date(); //获得现在的时间
d.getYear() //上面有横线,标示不建议使用。因为他是从1900年当做初始年的
d.getMonth() //有横线,因为月份是从0开始算的
d.getDate() //得到日
d.getHours() //得到时
d.getMinutes() //得到分
d.getSeconds() //得到秒
/*Calendar 创建
Calendar c = Calendar.getInstance();
c.set(2008,7,8,20,8,0);
c.get(Calendar.YEAE); //获得当前的年份
c.get(Calendar.MONTH); //获得当前的月(从0开始)
其余一样
Date d1 = c.getTime(); //将 Calendar 对象赋值给 date;
d1.toString()
/*转换
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
syso(sdf.format(d1));
/*时间戳
d2.getTime() // d2时间到1900.1.1的毫秒数
/*-------集合-----------
/*基本常识
集合中只能存放对象(引用),不能存放基础类型
存到集合中的东西叫做元素
不管集合里面是什么都可以看做是 Object 对象
在使用前都需要将其还原为以前的类型
/*分类
分为三类:列表、映射、集
列表:List
线性、元素致密有序
映射:Map
键值对、键不重复、有自身的排序机制
集:Set
无序、元素不重复
/*实现类
三种集合的接口
List: ArrayList Vector LinkesList Stack
Map: HashTable HashMap WeakHashMap TreeMap
Set: HashSet TreeSet
/*---------List集合----------
/*创建
List al = new ArratList();
Dog dog1 = new Dog();
Dog dog2 = new Dog();
/*存放(增)
al.add(dog1);
al.add(dog2);
al.add(2,dog1);//将一个 dog1 插入到02号位置。但不能超出集合长度
/*获取(查)
(al.get(0)得到的是一个 object 对象,需要强制转换)
Dog d1 = (Dog)al.get(0);
/*取代(改)
al.set(2,new Dog(30)); //用 Dog30 取代02处的对象。/*移除(删)
al.remove(2); //移除02号元素。
al.remove(dog1); //移除dog1元素。
/*其他
(和 Vector 可以互换,区别在于线程安全。ArrayList 线程不安全。Vector 线程安全)
al.clear(); //清空集合
al.isEmpty() //判断集合是否为空,返回布尔值
*/
}
}