应用程序编程接口
是对java预先定义的类或接口功能和函数功能的说明文档,目的是提供给开发人员进行使用帮助说明.
基本数据类型 byte short int long double float char boolean
包装类 这些类封装了一个相应的基本数据类型数值,并为其提供了一系列操作方法。
package com.ff.javaapi.day1;
public class IntDemo {
public static void main(String[] args) {
int num=10;
System.out.println(num);
//构造方法
Integer num1=new Integer(10);//将int 值包装在 Integer类对象中
Integer num2=new Integer("11");//将String值 包装在Integer类对象中
//Integer类中 提供了很多方法对 int类型进行操作
System.out.println(Integer.MAX_VALUE);//最大值
System.out.println(Integer.MIN_VALUE);//最小值
System.out.println(Integer.SIZE);//表示二进制补码二进制形式的 int值的位数。
System.out.println(Integer.BYTES);//表示二进制补码二进制形式的 int值的字节数。
System.out.println(Integer.toHexString(18));//由参数以十六进制表示的无符号整数值的字符串表示
System.out.println(Integer.toOctalString(14));//八进制
System.out.println(Integer.toBinaryString(6));//二进制
System.out.println(num1.equals(num2));//equals比较的是两个对象具体包含的值是否相等
System.out.println(num1==num2);//用于比较引用对象是 比较的是对象的地址是否相等
//int 引用类型转换为基本类型
Integer num3=new Integer(5);
int num4=num3.intValue();//取出对象中具体包含的值
long num5=num3.longValue();
int num6=Integer.parseInt("6");
//基本类型转换为引用类型
Integer num7= Integer.valueOf(7);
Integer num8= Integer.valueOf(7);
System.out.println(num7==num8);
//数值转换为字符串
System.out.println(num7.toString());
System.out.println(Integer.toString(9));
}
}
装箱
自动将基本数据类型转换为包装器类型 自动调用Integer的valueOf()方法
拆箱
自动将包装器类型转换为基本数据类型 自动调用的是Integer的intValue方法
package com.ff.javaapi.day1;
public class IntDemo2 {
//装箱 基本类型转换为引用类型 默认调用 valueOf()
//拆箱 引用类型转换为基本类型 默认调用 intValue()
Integer num1=new Integer(5);
int num3=2;
int num2=num1;
Integer num4=num3;
}
package com.ff.javaapi.day1;
public class IntDemo1 {
public static void main(String[] args) {
Integer num1=new Integer(2);
Integer num2=new Integer(2);
System.out.println(num1.equals(num2));//true Integer中的equals比较的是值是否相等
System.out.println(num1==num2);//false 比较的是地址是否相等
/*
valueOf 值在-128到127 在创建对象时如果多个值相同并且数值在valueOf值范围内 多个对象指的是同一个内存地址
*/
Integer num3=Integer.valueOf(8);
Integer num4=Integer.valueOf(8);
System.out.println(num3.equals(num4));//true
System.out.println(num3==num4);//true
}
}
Object类是所有Java类的祖先 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
object类中 equals比较的是对象地址是否相等 相当于==
package com.ff.javaapi.day1.object;
public class ObjectDemo2 {
public static void main(String[] args) {
Person p=new Person("siri",8);
Person p1=new Person("siri",8);
/*
object类中 equals比较的是对象地址是否相等 相当于==
public boolean equals(Object obj){
return (this==obj);
}
*/
System.out.println(p.equals(p1));//true
System.out.println(p==p1);//false
//其他类基本上都重写了equals方法
String a="abc";
String b="abc";
System.out.println(a.equals(b));//true
Integer c=10;
Integer d=10;
System.out.println(c.equals(d));//true
}
}
package com.ff.javaapi.day1.object;
import java.util.Objects;
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//重写的toString()方法
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
//重写的equals()方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
}
package com.ff.javaapi.day1.object;
public class ObjectDemo {
public static void main(String[] args) {
Person p=new Person("wangcao",8);//上面的Person类
/*
将对象输出是时会调用toString()
当类中没有定义toString()时会调用 Object类中的toString()
*/
System.out.println(p);
}
}
字符串是由多个字符组成的一串数据的字符串常量
java中所有字符串都是String类的实例.
第一种 String s = “abc”;
第二种: String s = new String(“abc”);
package com.ff.javaapi.day1.string;
public class StringDemo1 {
public static void main(String[] args) {
/*
字符串对象创建的两种方式
String a="abc"; 第一次创建时会在字符串常量池中检测有没有 没有的话就创建一个 如果常量池中有 则直接指向这个字符串的地址
String b=new String("bcd"); 只要是new出来的 就在内存中是独一无二的空间
*/
String a="abc";
String b="abc";
System.out.println(a.equals(b));
System.out.println(a==b);
String c=new String("bcd");
String d=new String("bcd");
System.out.println(c.equals(d));
System.out.println(c==d);
}
}
字符串是常量但是不能改变 一旦改变是在内存中创建新的对象
package com.ff.javaapi.day1.string;
public class StringDemo2 {
/*
字符串是常量但是不能改变 一旦改变是在内存中创建新的对象
private final char value[]
字符串的底层是char数组存储
final修饰的值不能改变
*/
public static void main(String[] args) {
String s="abc";
s+="def";
s+="hi";
s+="gk";
s+="lmn";
System.out.println(s);//abcdefhigklmn
}
}
package com.ff.javaapi.day1.string;
public class StringDemo3 {
public static void main(String[] args) {
String a = "abcd";
String b="abcD";
String c="ab";
String d="";
System.out.println(a.equals(b));//a和b的值是否相等
System.out.println(a.equalsIgnoreCase(b));//不区分大小写比较值是否相等
System.out.println(a.contains(c));//a字符串中是否包含c字符串
System.out.println(d.isEmpty());//d是否为空
System.out.println(a.startsWith(a));//判断a字符串是不是有b这个字符开头
System.out.println(a.endsWith(c));
}
}
package com.ff.javaapi.day1.string;
public class StringDemo4 {
public static void main(String[] args) {
String s="djaihsnaca";
System.out.println(s.length());//获取s字符串的长度
System.out.println(s.charAt(5));//获取索引为5的位置的值
System.out.println(s.indexOf("i"));//获取值为i的索引
System.out.println(s.indexOf("h",2));//返回h第一次出现的字符串内的索引,以2的位置开始搜索
System.out.println(s.substring(2));//截取索引2(包括2)后面的字符串
System.out.println(s);
System.out.println(s.substring(3,8));//截取索引3-8的字符串不包括8
}
}
package com.ff.javaapi.day2;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class StringDemo5 {
public static void main(String[] args) {
String s = "abAd";
byte[] b = s.getBytes();//编码 字符转为字节
System.out.println(Arrays.toString(b));
String s1 = new String(b);//解码 字节转为字符
System.out.println(s1);
String s4 = "中文";
try {
byte[] b1 = s4.getBytes("utf-8");
System.out.println(Arrays.toString(b1));
String s5 = new String(b1, "gbk");//乱码 因为编码用utf-8 解码用gbk
System.out.println(s5);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String ss = "lolto";
char[] c = ss.toCharArray();//转换为数组 编码
System.out.println(Arrays.toString(c));
String s2 = new String(c);
System.out.println(s2);//解码
String s3 = String.valueOf(c);//将char数组转换为字符串
System.out.println(s3);
}
}
package com.ff.javaapi.day2;
import java.util.Arrays;
public class StringDemo2 {
public static void main(String[] args) {
String s="AbCDefG";
System.out.println(s.toUpperCase());//全部转换为大写
System.out.println(s.toLowerCase());//全部转换为小写
String s1="xxxx";
System.out.println(s.concat(s1));//向字符串的尾部拼接一个字符串 效率高
String s2=s+s1;//效率最低的字符串拼接
System.out.println(s2);
String s3="abc:d:ef:ghi:jk";
String []s4=s3.split(":");
System.out.println(Arrays.toString(s4));
String s5="ab1cde2f3g4hijk5m";
String[]s6=s5.split("\\d");//将字符串用指定的正则表达式 分割为字符串数组
System.out.println(Arrays.toString(s6));
}
}
StringBuffer解决了字符串每次拼接都要构建一个新的String对象既耗时,又浪费空间的问题
线程安全的可变字符序列
package com.ff.javaapi.day2;
public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer s=new StringBuffer();无参的构造方法 底层创建一个长度为16的char数组
StringBuffer s1=new StringBuffer(10);
StringBuffer s2=new StringBuffer("df");
//大量的字符串拼接 使用StringBuffer 不会创建新的对象
s.append("aaa");//拼接字符串
s.append("abc");
// System.out.println(s);
s2.append("abc");
s2.insert(1,"xxx");//向指定位置插入字符串
// s2.delete(0,2);//删除0-2位置的字符
// s2.deleteCharAt(4);//删除索引为4位置的字符
// s2.replace(1,2,"d");//将1-2索引位置的字符替换为d
// s2.reverse();//字符串反转
System.out.println(s.substring(2,5));//将字符串索引为2-5位置的字符串截取出来
System.out.println(s);
System.out.println(s2);
}
}
与StirngBuffer基本一样
String 内容不可变
StringBuffer 线程安全 内容可变
StringBuilder 内容可变
public static void main(String[] args) {
// long round(double a) double型的数据a转换为long型(四舍五入)
double a=-2.45;
double b=9.00;
System.out.println(Math.abs(a));//绝对值
System.out.println(Math.sqrt(b));//平方根
System.out.println(Math.pow(Math.abs(a),b));//a的b次幂
System.out.println(Math.max(a,b));//最大值
System.out.println(Math.min(a,b));//最小值
System.out.println(Math.random());//0.0 到 1.0 的随机数
System.out.println(Math.round(a));//四舍五入
System.out.println(Math.floor(8.2));
System.out.println(Math.ceil(8.2));
}
public static void main(String[] args) {
Random r=new Random();//随机数
double b1=r.nextDouble();
double b2=r.nextDouble()*5+1;
System.out.println(b1);
System.out.println(b2);
System.out.println( r.nextBoolean());
byte []b=new byte[5];
r.nextBytes(b);
System.out.println(Arrays.toString(b));
Random r1=new Random(100);
Random r2=new Random(100);
for (int i = 0; i < 100; i ++) {
System.out.println(r1.nextInt(10)+", "+r2.nextInt(10));
}
}
public static void main(String[] args) {
// System.out.println("旺财");
// System.exit(0);//退出虚拟机
// System.out.println("旺财1");
long start = System.currentTimeMillis();//返回以毫秒为单位的当前时间
for (int x = 0; x < 100000; x++) {
System.out.println("hello" + x);
}
long end = System.currentTimeMillis();
System.out.println("共耗时:" + (end - start));
}
public class DateUtil {
//固定格式的字符串转日期
public static Date stringToDate(String s) throws ParseException {
if (s==null)
throw new NullPointerException("日期为空");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
return sdf.parse(s);
}
//自定义格式的字符串转日期
public static Date stringToDate(String s,String p) throws ParseException {
if (s==null)
throw new NullPointerException("日期为空");
SimpleDateFormat sdf=new SimpleDateFormat(p);
return sdf.parse(s);
}
//将当前日期转为指定格式字符串
public static String dateToString(String p){
SimpleDateFormat sdf=new SimpleDateFormat(p);
return sdf.format(new Date());
}
//将指定的时间对象 转为指定格式的字符串
public static String dateToString(Date date,String p){
SimpleDateFormat sdf=new SimpleDateFormat(p);
return sdf.format(date);
}
}