一.object类
Object类是类层次结构的根。每个类都有 Object作为超类。所有对象,包括数组,实现这个类的方法。
方法:
equals:比较地址的
Object中的equals实现用==
1.判断是否是当前的类型(的子类)
2.强转
3.根据自己的意愿比较
==:比较值(栈中所存放的)
toString: 看看当前对象的属性(自动调用),不重写的时候:完整的类名@哈希码值
hashCode:返回对象的哈希码值,每个对象的哈希码值是不相同的
getClass:获取当前运行时候的类
finalize:垃圾回收机制,自动调用
线程:wait/notify(唤醒一个在这个对象的监视器上等待的单个线程。)
public class TestObject {
int age;
String name;
/* @Override
public boolean equals(Object obj) {
//地址相同
if (this == obj)
return true;
//null
if (obj == null)
return false;
//类
if (getClass() != obj.getClass())
return false;
TestObject other = (TestObject) obj;
if (a != other.a)
return false;
return true;
}*/
public static void main(String[] args) {
/**
* 存储任意的10个对象
*/
Object [] tens = new Object[10];
int [] a = new int[3];
tens [0] = new Date();//多态
tens [1] = new Scanner(System.in);
tens[2] = a;
print(tens[0]);
tens[3] = new Date();
//获取当前运行的TextObject的类对象
Class c = new TestObject().getClass();
System.out.println(c);
int num1 = new TestObject().hashCode();
int num2 = new TestObject().hashCode();
System.out.println(num1+" "+num2);
int num3 = "你".hashCode();
int num4 = "你".hashCode();
System.out.println(num3+" "+num4);
}
//A?B:C
/**
* 用户根据自己的需求进行比较2个对象,重写了hashcode
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
TestObject other = (TestObject) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
/**
* 方法:传入一个对象,获取对象的地址
*/
public static void print(Object obj){
System.out.println(obj);
}
/**
* 方法:传入一个数字,1:返回时间 2 返回Scanner
*/
public static Object a(int num ){
if(num==1){
return new Date();
}else{
return new Scanner(System.in);
}
}
}
二.String
1.String(不可变字符序列)
1.1三种构造方法
String str1 = new String();
String str2 = new String("你好!4");
char [] a = {'你','好','!'};
//通过字符数组
String str3 = new String(a,0,3);//String的构造方法
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
结果:
(此处为空)
你好!4
你好!
设置字符为GBK的格式
//获取字符串的字节数组(GBK格式)
byte [] b = “你好!”.getBytes(“GBK”);
String str4 = new String(b,0,b.length);
System.out.println(str4);
//通过构造函数创建GBK格式的字符串
String str5 = new String(b,”GBK”);
System.out.println(str5);
结果:
你好!
你好!
1.2charAt(int index):获取指定下标字符串的字符
length():获取字符串的长度
String str5 = new String(b,"GBK");
System.out.println(str5);
String str6 = "今天的天气挺好的,温度适宜";
char c = str6.charAt(3);//0----
int len = str6.length();
System.out.println(c+" "+len);
结果:天 13
//获取字符串的每一个字符
for (int i = 0; i < str6.length(); i++) {
System.out.println(str6.charAt(i));
}
1.3compareTo();比较返回int类型 正数,负数,0
int num = str2.compareTo(str5);
System.out.println(num);
1.4concat():拼接字符串
str2.concat("拼接字符串"); //你好!4拼接字符串
System.out.println(str2);
1.5contains():是否包含
//是否包含
boolean flag = str2.contains("你好");
System.out.println(flag);
1.6endswith():以什么结尾,过滤
String strFile = "a.txt";
//以什么结尾:过滤
if(strFile.endsWith(".java")){
System.out.println("这是一个java文件");
}else{
System.out.println("这不是java文件");
}
1.7indexof():从左往右字符串的位置,第一次出现
1.public int indexOf(String str)
//str6="今天的天气挺好的,温度适宜"
int index = str6.indexOf('你');//自动转换
System.out.println(index); //-1 (没有这个)
index = str6.indexOf("挺好的");//按着第一个字符出现的索引“挺”为5
index = str6.indexOf('天');//1,第一个字符(天)
2.public int indexOf(int ch,int fromIndex)
index = str6.indexOf('天',2);//从第二个天开始,返回值为3
1.8lastindexof():从右往左
index = str6.lastIndexOf('天');//只是寻找方式变了,结果也为3
1.9isEmpty
flag = str2.isEmpty();
System.out.println(flag);
2.0 trim:之去除字符串首和尾的所有空格,字符串中间的去除不了
str8 = " 你好 ";
str8 = str8.trim()+1;
System.out.println(str8);
2.1 split:以“ ”分割
String str8 = "1332456789@qq.com";
String [] arrStr = str8.split("@");
for (int i = 0; i < arrStr.length; i++) {
System.out.println("arrStr["+i+"]="+arrStr[i]);
}
str8 = "abccbacd";
arrStr = str8.split("a");
for (int i = 0; i < arrStr.length; i++) {
System.out.println("arrStr["+i+"]="+arrStr[i]);
}
2.2replace:用新的替换旧的
public String replace(char oldChar, char newChar)
str6 = str6.replace('天', '地');
System.out.println(str6);//今地的地气挺好的,温度适宜
2.3replaceAll
public String replaceAll(String regex,String replacement)
String str7 = "13302341587";//133****1587
str7 = str7.replaceAll("\\d{3}", "哈哈");//每三个数字替换,\转移字符
System.out.println(str7);//哈哈哈哈哈哈87
2.4matches
str1 = "1";
flag = str1.matches("[a-zA-Z]");
System.out.println(flag);//false
//简单匹配一个字符串判断他是否是手机号
str1.matches("[0-9]{11}");
//匹配一个QQ邮箱 前面数字 [5-10] @ qq.com
str1.matches("[0-9]{5,10}@qq.com");
2.5正则表达式:Class Pattern类中
正则表达式
描述:正则表达式是一串特定的字符,组成一个“规则字符串“,这个规则字符串是描述文本规则的工具,正则表达式就是记录文本规则的代码。
例如:正则式“[a-z]”表示a到z的任意一俄国字符,正则表达式“[a-z]+”表示有一个或多个字符串组成的字符串。
正则式既然是一种字符串组合的规则,那么我们就可以按着规则组合自己想要的正则式。
[]:代表可以出现一个字符
[abc]这个字符可以是a或b或c
[^abc]不能是a或b或c的其他字符
[a-z]这个字符只能是小写字母
[a-zA-Z0-9]可以是字母或数字
[a-z&&[^bc]]是小写字母但不能是b或c
. :任意一个字符
\d:任一一个数字,等同[0-9]
\D:任一一个非数字字符,
等同[^0-9]
\s:任一一个空白字符
\S:非空白字符
\w:单词字符 [0-9a-zA-Z_]
\W:非单词字符[^\w]
量词:
?:表示0-1次
[\w]?:表示0或1个单词字符
[\w][\w]?:表示1或2个单词字符
*:表示0-无穷次
[\d]*:任意次数字
[\d][\d]*:至少一次
+:表示1-无穷次
[\d]+:至少一个数字
{n}:n次.n只能是数字
[\d]{11}:11次数字
{n,}:n次以上
{n,m}:n到m次
[\d]{3,5}:3-5位的数字
():将内容看作一个整体
(abcd):要出现一个abcd
(abcd)+:至少一次abcd
()中可以使用或关系。在几个整体中选其一
(138|135|130):是138或135或130
下面列出常见的正则式:
[abc] a,b,c中任意一个字符
[^abc] 除了a,b,c任意一个字符
[a-z] a~z的任意一个字符
[a-zA-Z0-9] a~z,A~Z,0~9中任意一个字符
[a-z&&[^bc]] a~z中除了b,c以外任意一个字符,其中&&表示“与”的关系。
. 任意一个字符
\d 任意一个数字字符,相当于[0-9]
\D 任意一个非数字字符,相当于[^0-9]
\s 空白字符,相当于[\t\n\x0B\f\r]
\S 非空白字符,[^\s]
\w 任意一个单词字符,[a-zA-Z_0-9]
\W 任意一个非单词字符,[^\w]
X? 表示0个或1个X
X* 表示0个或任意多个X
X+ 表示0到任意多个X(大于等于1个X)
X[n] 表示n个X
X[n,] 表示n到任意多个X(大于等于n个X)
X[n,m] 表示n个到m个X(大于等于n个且小于m个X)
2.6valueof(返回为string的形式)
三system/Stringbuilder/StringBuffer
1. StringBuilder:可变字符序列:final 线程不安全 速度快,3个构造方法
StringBuffer: 可变字符序列: final 线程安全 速度慢
这两个的区别在于StringBuffer的方法多一个synchronized
1.1)Stringbuilder(构造方法)
StringBuilder()
构造一个没有字符的字符串生成器,并构造了16个字符的初始容量。
StringBuilder(CharSequence seq)
构建一个包含指定的 CharSequence相同字符的字符串生成器。
StringBuilder(int capacity)
构造一个字符串生成器没有字符和一个初始容量的 capacity参数指定。
StringBuilder(String str)
构造一个初始化为指定字符串的内容的字符串生成器。
1.2)append/toString/insert/delete/reverse
StringBuilder builder = new StringBuilder();//字符数组的大小:16
builder = new StringBuilder(3);//字符数组的大小是:3
builder = new StringBuilder("哈哈哈哈");//字符数字的长度:字符串的大小+16
builder.append(true).append(12).append(new Date()).append("哈哈");
System.out.println(builder.toString());
builder.insert(4, "INSERT");
System.out.println(builder);
builder.delete(4, 10);//包头不包尾
System.out.println(builder);
builder.reverse();//反转数组
System.out.println(builder);
2.system类
system流:(err/out/in)
system.exit:终止当前正在运行的java虚拟机
system.gc:运行垃圾收集器。(手动垃圾回收机制)
runFinalization :运行任何对象待定型的定型方法。
getProperties() :确定当前系统属性
getProperty(String key) :获取指定的键指示的系统属性。
currentTimeMillis()//返回当现在为止的毫秒值
public static void arraycopy(Object src, int srcPos,Object dest, int destPos,int length)//数组复制
src -源阵列。
srcPos -源数组中的起始位置。
dest -目标数组。
destPos在目标数据的起始位置。
length -数组元素的数目被复制。
四.Math
ceil(大于/等于某数的最小整数)
floor(返回小于/等于某数的最大整数)
Max/min
random(大于或等于0.0到小于1.0之间)
sqrt()//开平方,获取正数
public class TestMath {
public static void main(String[] args) {
//大于等于-12.9的最小整数-12.0
double num = Math.ceil(-12.9);
System.out.println(num);
//小于等于-12.9的最大整数-13.0
num = Math.floor(-12.9);
System.out.println(num);
int num1 = Math.max(-10,10);
num1 = Math.min(-10,10);
System.out.println(num1);
//开10的平方,获取那个正数
num = Math.sqrt(10);
System.out.println(num);
//0.0----1.0的随机数
Math.random();
}
}
五.Number类
抽象类是平台类 Number表示数值转换为原始类型 byte, double, float, int, long,和 short父类。从一个特定的 Number实现数值给定的原始类型转换的具体语义是由实现定义的 Number问题。
抽象类
大数据类:BigInter/BigDecimal
import java.math.BigInteger;
public class TestBig {
public static void main(String[] args) {
BigInteger bi = new BigInteger("-1233");
bi = bi.abs();
System.out.println(bi);
double num = bi.doubleValue();
System.out.println(num+1);
}
}
六.Runtime:当前运行的对象
七.Date:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Date_Test {
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
//获取当前时间
Date date=new Date();
System.out.println(date.toLocaleString());//本地时间
System.out.println(date.toGMTString());//格林时间
System.out.println(date.toString());
//获取年月日:时分秒
System.out.println("年:"+(date.getYear()+1900));//此处需要加上1900
System.out.println("月:"+(date.getMonth()+1));//(getMonth:从0-11需要加一)
System.out.println("星期:"+(date.getDay()));//getDay(为星期几)
System.out.println("日:"+(date.getDate()));//获取日
System.out.println("时"+(date.getHours()));//时
System.out.println("分"+(date.getMinutes()));//分
System.out.println("秒"+(date.getSeconds()));//秒
System.out.println(date.getTime());//获取从1970年1月1日开始的毫秒值
System.out.println(date.getTimezoneOffset());//时区偏移,在几分钟内,用于当前时区。c
//格式化
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//data---字符串
String val=format.format(date);
System.out.println(val);
//字符串转换成data
String str1="2017-1-10 09:3:5";
System.out.println(format.parse(str1));
}
}
八.Format类
1.SimpleDateFormat:格式化
//parse表示(由string类型的转换成想要格式化的类型),
//format表示(由想要格式化的类型转换成string类型),
public class Date_Test {
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
//获取当前时间
Date date=new Date();
//格式化
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//data---字符串
String val=format.format(date);
System.out.println(val);
//字符串转换成data
String str1="2017-1-10 09:3:5";
System.out.println(format.parse(str1));
}
}
2.NumberFormat类
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
public class NumberFormat_Test {
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
NumberFormat numberFormat=new DecimalFormat("0.00%");//DecimaFormat/choiceFormat为NumberFormat的子类
double num=0.1124253822;
// numberFormat.parse(字符串);//parse(表示由字符串到格式化的类型)
numberFormat.format(num);
System.out.println(numberFormat.format(num));//format(表示)
String str1="19.8888934567888%";
double num1=(double) numberFormat.parse(str1);
System.out.println(num1);
System.out.println(numberFormat.parse(str1));
}
//parse表示(由string类型的转换成想要格式化的类型)
//format表示(由想要格式化的类型转换成string类型)
}
九.Calendar类
Calendar.getInstance()创建对象
calendar.set()的容错性
ca1.get(Calendar.DATE)采用的是Calendar类的默认字段
package day12;
import java.util.Calendar;
public class Calenda_Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar ca1=Calendar.getInstance();//使用getInstance创建对象
/* //ca1.get(Calendar.DATE):返回的是一个int类型
System.out.println(ca1.get(Calendar.DATE));//返回的是日这个类型
System.out.println(ca1.get(Calendar.DAY_OF_WEEK)
+" "+ca1.get(Calendar.DAY_OF_MONTH));//一周的第几天,一个月中的第几天
System.out.println(ca1.get(Calendar.DAY_OF_WEEK_IN_MONTH));//一个月中的第几周
System.out.println(ca1.get(Calendar.HOUR));//12小时制
System.out.println(ca1.get(Calendar.HOUR_OF_DAY));//24小时制
System.out.println(ca1.get(Calendar.MONTH)+1);//月*/
ca1.set(Calendar.YEAR, 2069);//set给年赋值
System.out.println(ca1.get(Calendar.YEAR));
ca1.add(Calendar.DATE, 50);//add有容错性,给日期向后相加某个天数
System.out.println((ca1.get(Calendar.MONTH)+1)+" "+ca1.get(Calendar.DATE));
}
}