1.Object--Java的祖先类
a.概述:类 Object 是类层次结构的根类,由Java不断向上抽取而来。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
b.常用方法:
boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。
代码示例:
class Person extends Object {
private int age;
Person(int age) {
this.age = age;
}
// 覆盖父类equals方法,根据对象特有内容,建立判断对象是否相同
public boolean equals(Object obj) {
if (!(obj instanceof Person)) {// 健壮性判断
throw new ClassCastException("类型转换异常");
}
Person p = (Person) obj;
return this.age == p.age;
}
}
public class StringDemo {
public static void main(String[] args) {
Person p1 = new Person(20);
Person p2 = new Person(15);
System.out.println(p1.equals(p2));
}
}
int hashCode()
返回该对象的哈希码值。
注意:当 equals 方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
Class getClass()
返回此 Object
的运行时类。
代码示例:
Person p1=new Person(20);
Person p2=new Person(15);
Class c1=p1.getClass();
Class c2=p2.getClass();
System.out.println(c1==c2);
String
toString()
返回该对象的字符串表示。
代码示例:
System.out.println(p1);//默认调用 toString 方法
System.out.println(p1.getClass().getName()+"@"+Integer.toHexString(p1.hashCode()));//和 p1.toString()值相同
2.String--字符串类
a.概述:字符串是一个特殊的对象,一旦被初始化就不能被改变
b.常用方法:
构造方法
代码示例:
// 等效于String s="";表示一个对象 不等效于常量 String s=null;
String s = new String();
byte[] arr={97,66,67,68};
//String(byte[] bytes)自动查ASCII码表 将字节数组变成字符串
String s1=new String(arr);
System.out.println("s1="+s1);
char[] arr1={'h','e','l','l','o'};
//String(char[] value,int offset,int count)分配一个新的String,它包含取自字符数组参数的一个子数组的字符
String s2=new String(arr1,1,3);
System.out.println(s2);
常用功能
代码示例:
// 1.获取
String s = "hello";
//1.1 int length();获取字符串中字符的个数
System.out.println("length:" + s.length());
//1.2 char charAt(int index);根据位置获取字符
System.out.println("char:" + s.charAt(2));
//1.3 int indexOf(int ch);返回指定字符在此字符串中第一次出现处的索引。如果不存在返回 -1
System.out.println("index:" + s.indexOf('l'));
//1.4 int indexOf(int ch,int fromIndex);返回指定字符在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
//1.5 int indexOf(String str);返回指定子字符串在此字符串中第一次出现处的索引。
//1.6 int indexOf(String str,int fromIndex);返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
//1.7 int lastIndexOf(int ch);回指定字符在此字符串中最后一次出现处的索引。
System.out.println("index:" + s.lastIndexOf('l'));
//1.8 int lastIndexOf(int ch,int fromIndex);返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
//1.9 int lastIndexOf(String str); 返回指定子字符串在此字符串中最右边出现处的索引。
//1.10 int lastIndexOf(String str,int fromIndex); 返回指定子字符串在此字符串中最右边出现处的索引。
//1.11 String substring(int beginIndex,int endIndex);返回一个新字符串,它是此字符串的一个子字符串。
System.out.println("substring:" + s.substring(1, 3));
//1.12 String substring(int beginIndex);
// 2.转换
//2.1 String[] split(String regex)将字符串转成字符串数组(字符串的切割)
String s2 = "Monday,Tuesday,Wednesday";
String[] arr = s2.split(",");
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
//2.2 char[] toCharArray();将字符串转成字符数组
char[] chs=s2.toCharArray();
for(int i=0;i<chs.length;i++){
System.out.println(chs[i]);
}
//2.3 byte[] getBytes();将字符串转成字节数组
byte[] bytes=s2.getBytes();
for(int i=0;i<bytes.length;i++){
System.out.println(bytes[i]);
}
//2.4 String toUpperCase(); StringtoLowerCase();将字符串中的字母转换大小写
System.out.println("hello".toUpperCase());
//2.5 String replace(char oldch,char newch); String replace(String s1,String s2);将字符串中的内容进行替换
System.out.println("hello".replace('l', 'x'));
//2.6 String trim(); 返回字符串的副本,忽略前导空白和尾部空白。
System.out.println(" hell o ".trim());
//2.7 String concat(String str);将指定字符串连接到此字符串的结尾。
System.out.println("hel".concat("lo"));
//2.8 String valueOf(int i); 返回 int 参数的字符串表示形式。
System.out.println(String.valueOf(1)+1);
//3.判断
//3.1 boolean equals(Object obj);两个字符串内容是否相同
// boolean equalsIgnoreCase(String anotherString);将此 String 与另一个 String 比较,不考虑大小写。
System.out.println("ABC".equalsIgnoreCase("abc"));
//3.2 boolean contains(String str);字符串中是否包含指定字符串
//3.3 boolean startsWith(String prefix); 测试此字符串是否以指定的前缀开始。
System.out.println(s.startsWith("he"));
// boolean endsWith(String suffix); 测试此字符串是否以指定的后缀结束。
//4.比较
//4.1 boolean compareTo(String anotherString); 按字典顺序比较两个字符串。
System.out.println("abc".compareTo("acc"));
//4.2 String intern();返回字符串对象的规范化表示形式。
String s3=new String("abc");
String s4=s3.intern();
System.out.println(s3==s4);
3.StringBuffer--字符串缓冲区类
a.概述:StringBuffer是一个容器,用于存储元素,必须以字符串的形式调用。
b.特点:长度可变,可存储不同数据类型,要转成字符串进行使用,可对字符串进行修改
b.常用方法:
代码示例:
//new StringBuffer();构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuffer sb=new StringBuffer();
//1.添加 StringBuffer append(data data);
sb.append(true);
sb.append(1);
sb.append("hello");
System.out.println(sb);
//插入 StringBuffer insert(int offset,data data);
sb.insert(4, "num:");
System.out.println(sb);
//2.删除 StringBuffer delete(int start,int end); 移除此序列的子字符串中的字符。
sb.delete(0, 4);
System.out.println(sb);
// StringBuffer deleteCharAt(int index); 移除指定位置的元素
sb.deleteCharAt(4);
System.out.println(sb);
//3.修改 StringBuffer replace(int start,int end,String str);
System.out.println(sb.replace(0,3,"xxx"));
// void setCharAt(int index,char ch);
sb.setCharAt(0, 'z');
System.out.println(sb);
//4.查找 char charAt(int index); 回此序列中指定索引处的 char 值。
// int indexOf(String str); 返回第一次出现的指定子字符串在该字符串中的索引。
// int lastIndexOf(String str);返回最右边出现的指定子字符串在此字符串中的索引。
System.out.println(sb.charAt(0));
System.out.println(sb.indexOf("ll"));
System.out.println(sb.lastIndexOf("ll"));
//5.自定义设置缓冲区初始容量 void setLength(int newLength);
sb.setLength(10);
System.out.println(sb);
System.out.println(sb.length());
4.StringBuilder--字符串缓冲区类
a.概述:一个可变的字符序列。此类提供一个与 StringBuffer
兼容的 API,但不保证同步(线程不安全),执行速度快。
b.常用方法:
同 StringBuffer
5.Integer--对象包装类
a.概述:将基本数据类型包装成对象。可以在对象中定义更多的方法操作该数据。
b.常用方法:
代码示例:
//1.该包装对象主要用基本类型和字符串之间的转换
//基本类型-->字符串
//1.基本类型数值+""
//2.用String类中的 静态方法 valueOf(基本类型数值);
//3.用Integer的 静态方法 valueOf();
//字符串-->基本类型
//用包装类中的静态方法
int parseInt("intstring");
long parseLong("longstring");
boolean parseBoolean("booleanstring");
//如果字符串被Integer进行对象的封装 可使用 非静态方法 intValue(); 将一个 Interger 对象转成基本数据类型值
//2.整数具备不同的进制体现
//十进制-->其他进制
System.out.println(Integer.toBinaryString(60));
System.out.println(Integer.toOctalString(60));
System.out.println(Integer.toHexString(60));
System.out.println(Integer.toString(60,16));
//其他进制-->十进制
System.out.println(Integer.parseInt("3c",16));
//3.Integer 类中 equals 方法覆盖 Object 类中的 方法,比较两个对象的数值是否相等
Integer a=new Integer("3");
Integer a=new Integer(3);
System.out.println(a==b);
System.out.println(a.equals(b));
//4. 自动装箱,简化书写
Integer i=1;
Integer i = new Integer(4);
6.System--系统类
a.概述:System
类包含一些有用的类字段和方法。它不能被实例化,方法都是静态的。
b.常用方法:
代码示例:
//1. static long currentTimeMillis(); 返回以毫秒为单位的当前时间
System.out.println(System.currentTimeMillis());
//2. static Properties getProperties(); 确定当前的系统属性,并存储到Properties集合中
Properties prop=System.getProperties();
Set<String> nameSet=prop.stringPropertyNames();
int count=0;
for(String name:nameSet){
String value=prop.getProperty(name);
count++;
System.out.println(count+"."+name+":"+value);
}
//3. static static String getProperty(String key); 获取指定键指示的系统属性。
private static final String LINE_SEPARATOR=System.getProperty("line.separator");
System.out.println("分割"+LINE_SEPARATOR+"符");
7.Runtime--运行时环境类
a.概述:每个 Java 应用程序都有一个 Runtime
类实例,使应用程序能够与其运行的环境相连接。可以通过getRuntime
方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例。
b.常用方法:
代码示例:
Runtime r=Runtime.getRuntime();
// Process exec(String command); 在单独的进程中执行指定的字符串命令
r.exec("notepad.exe");
8.Math--数学运算工具类
a.概述:Math
类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
b.常用方法:
代码示例:
//1.static double ceil(double a); 返回大于参数的最小整数
//2.static double floor(double a); 返回小于参数的最大整数
//3.static double round(double a); 返回四舍五入的整数
double d1=Math.ceil(12.56);
double d2=Math.floor(12.56);
double d3=Math.round(12.46);
System.out.println("d1="+d1);
System.out.println("d2="+d2);
System.out.println("d3="+d3);
//4.static double pow(double a, double b);返回第一个参数的第二个参数次幂的值。
double d4=Math.pow(2, 7);
System.out.println("d4="+d4);
//5.static double random(); 随机返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
for(int i=0;i<10;i++){
double d=Math.random();
System.out.println(d);
9.Date--日期类
a.概述:类 Date
表示特定的瞬间,精确到毫秒。
b.常用方法:
代码示例:
//1.日期对象和毫秒值之间的转换
//毫秒值-->日期对象
//通过Date对象的构造方法 new Date(timeMillis);
Date date=new Date(86400000);
System.out.println(date);
//通过setTime设置
//通过Date对象的方法对该日期中的各个字段(年月日等)进行操作
//日期对象-->毫秒值
//getTime方法 因为可以通过具体的数值进行运运算
//2.对日期格式格式化
//获取日期格式对象,具备默认的风格 FULL LONG 等可以指定风格
DateFormat dateFormat =DateFormat.getDateInstance();
//获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格。
dateFormat=DateFormat.getDateTimeInstance();
//日期对象-->日期格式的字符串 使用DateFormat 类中的 format 方法
String str_date=dateFormat.format(date);
//日期格式的字符串-->日期对象 使用DateFormat 类中的parse 方法
Date date1=dateFormat.parse(str_date);
System.out.println(str_date);
10.Calendar--日历类
a.概述:Calendar
类是一个抽象类,它为特定瞬间与一组诸如YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等日历字段
之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
b.常用方法:
代码示例:
//getInstance() 使用默认时区和语言环境获得一个日历。
Calendar c=Calendar.getInstance();
//void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
c.set(2012,2,20);
//abstract void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。
c.add(Calendar.YEAR, 2);
//int get(int field); 返回给定日历字段的值。
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH);
int day=c.get(Calendar.DAY_OF_MONTH);
int week=c.get(Calendar.DAY_OF_WEEK);
System.out.println(year+"年"+month+"月"+day+"日"+"星期"+week);
11.包 package
a.包是一种对类的封装形式,写在程序文件第一行
b.格式: 包名.类名
c.作用: 对类文件进行分类管理,给类提供多层命名空间
d.包与包之间的访问:
public protected default private
同一类中 可以 可以 可以 可以
同一包中 可以 可以 可以 -----
子类中 可以 可以 ----- -----
不同包中 可以 ----- ----- -----
e.导入指定包中的类使用关键字 import 例: import java.lang.Object;
f:Jar--java文件的压缩包