JavaSE常用类
JavaSE常用类
- 数组
- String
- Object
- Math
- Date
- File
- Properties
1 数组
用于存储同一类型数据的一个容器。好处:可以对该容器中的数据进行编号,从0开始。数组用于封装数据,就是一个具体的实体。
- 数组可以看成是多个相同类型数据组合,对这些数据的统一管理。
- 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
- 数组的元素可以是任何数据类型,包括基本类型和引用类型。
- C和C++中的数组都可以分配在栈上面,而JAVA中的数组是只能分配在堆上面的,因为JAVA中的数组是引用类型。
☆ 数组的创建与初始化 一维数组的声明方式有2种:
- 格式一:数组元素类型 数组名[ ]; 即type var[ ];
- 格式二:数组元素类型[ ] 数组名; 即type[ ] var;
一维数组的初始化化:
-
动态初始化:数组定义与为数组元素分配空间和赋值的操作分开进行。
Date days=new Date[3]; days[0] =new Date(1,1,2020);
-
静态初始化
int a[ ] ={ 3, 9, 8}; Date days[ ] ={ new Date(1, 4, 2004), new Date(2,4,2004), new Date(3,4, 2004) };
二维数组
int[][] a=new int[3][];//a : int[] 类型的 数组 ,该数组有3个元素
a[0] =new int[2]; //a 的元素 a[0] 的数据类型为 int 类型的数组,空间大小为2
2 String
☆ 数组、集合、字符串之间的转换
将数组转换成集合
a. Arrays.asList( array )
例:List list = Arrays.asList(names);//将数组转换成集合。
将数组转换成字符串、也可将整数转换成字符串
b. String.valueOf( array)
例:
char [] ch1 = {'a','c','a','b','a'};
String str2 = String.valueOf(ch1);
例:
int num = 123456;
String str =String.valueOf(num);
将字符串转换成数组
c. toCharArray()
例:
String str = "gdfgdfgd";
char[] ch = str.toCharArray();
将字符数组变成字符串特定格式输出
d.Arrays.toString(),如[1,2,3]
例:
String str1 = Arrays.toString(ch);
System.out.println(str1);
将字符串反转
e.str.reverse();
例:
StringBuffer sb =new StringBuffer("adfsdsd");
sb.reverse();
☆replace();函数
例1://将字符串"abcdabcdabdcadcbadcb"的字符出现的次数输出
String num="abcdabcdabdcadcbadcb";
String t=num.replace("a","");//将所有的a转化为空字符--消去字符a
System.out.println(num.length()-t.length());
☆replaceAll(),用正则表达式
例2://将字符串中的数字去除
String num1="ab23c7da45bc5da65bd5c67ad7cb9adcb";
String t1=num1.replaceAll("[0-9]", "");
System.out.println(t1);
例3://计算字符串的长度,一个字符算两个
byte[] b=str.getBytes();
System.out.println(b.length);//若出现一个汉字代表3个字节的情况,将Utf-8换成GBK就可以了
String m=str.replaceAll("[\\u4e00-\\u9fa5]", "xx");
System.out.println(m.length());
☆ String类型是否可以被继承,为什么?
不能被继承,因为是被final修饰的类
☆ String类型是否是基本类型,比较String类型变量时,== 和equals有何区别?
不是,是引用类型
如果 String类型是直接赋值 == 和 equals 效果相同
String a = “abc “;
String b = “abc”;
a == b 和 a.equals(b)都为true
如果String是通过new构建的 == 和equals效果不同
String a = new String(“abc”);
String b = new String(“abc”);
a ==b 结果为false a.equals(b)结果为true
☆ char类型中是否可以存放一个汉字,为什么?
可以,char类型中存放的数据以Unicode码存放。
☆ string中的方法:
- charAt() 方法:一般与for循环一起,遍历字符串
String str=“HelloJava,HelloWorld”;
for(int i=0;i<str.length();i++){
System.out.println(charAt(i));
}
-
concat() 方法;拼接字符串,将指定字符串连接到此字符串的结尾
str.concat(“s”); //得到Hello Java,Hello Worlds
-
startWith() 方法;测试此字符串是否已指定的前缀开始,
boolean str. startWith(“Hello”); //true
-
format() 方法:将字符串按照某种格式输出 int i=1;int j=2;
System.out.println(String.format("%d+%d=%d",i,j,i+j));//1+2=3 indexOf(String) 方法:输出字符串第一次出现的索引,没有的话输出-1
System.out.println(str.indexOf(“Hello”));//0 -
lastIndexOf() 方法:输出字符串最后一次出现的索引
-
replace(old String, new String) 方法:替换字符串
-
split() 方法 :分割字符串
-
substring(int start,int end) 方法:截取字符串
-
toCharArray() 方法:变成字符数组
-
trim() 方法:去掉字符串两端的空格,字符串中间的去不掉
-
toUpperCase() 方法:将字符串转化为大写
☆ StringBuffer和StringBuilder区别
- StringBuffer线程安全的,同步的,效率比较低,JDK1.0之后出现
- StringBuilder线程不安全,不同步的,效率比较高,JDK1.5之后出现
StringBuilder
- `public StringBuilder()`:构造一个空的StringBuilder容器。
- `public StringBuilder(String str)`:构造一个StringBuilder容器,并将字符串添加进去。
- `public StringBuilder append(...)`:添加任意类型数据的字符串形式,并返回当前对象自身。
- `public String toString()`:将当前StringBuilder对象转换为String对象。
3 Object
Object:引用类型的根,是所有类的超类,是java中唯一一个没有父类的类
1、toString():将对象转成字符串,默认返回的格式:
类名@哈希值 = getClass().getName() + "@" + Integer.toHexString(hashCode())
2、 boolean equals(Object obj):用于比较两个对象是否相等,其实内部比较的就是两个对象地址。
equals()和 == 的区别: ==:可以判断基本数据类型和引用数据类型
- 对于引用数据类型,表示两个对象的引用是否相等,即栈里面引用的地址是否相等
- 对于基本数据类型,表示两个变量的数值是否相等
- equals:可以判断引用数据类型
- 引用数据类型:表示两个对象的引用是否相等,但是包装类、String、Date、File除外(这些判断的是对象的值是否相等,即堆内存里面的值是否相等)
3. hashcode() 返回的是对象的内存地址对应的int类型数据,但是我们可以重写hashCode()方法,返回的就不再是内存地址。
hashcode()相同的对象,这两个对象不一定相同;如果两个对象相同,则hashcode()一定相同。因此,重写equals方法必须先重写hashcode方法
4、Class getClass():获取任意对象运行时的所属字节码文件对象。
通常equals,toString,hashCode,在应用中都会被复写,建立具体对象的特有的内容。
4 Math
☆ Math方法
Math.ceil(2.4);//3取比值大的最小整数
Math.ceil(-2.4);//-2
Math.floor(2.5);//2取比值小的最大整数
Math.round(2.5);//3四舍五入
Math.round(-2.5);//-2
Math.random()//范围是[0,1)
☆ 获取随机数的方法
- **Math.random()**获取[0,1)的值,取不到1; 用法:
(int)Math.random()\*n+1;//取到1到n之间的整数
Random r = new Random();
int n = r.nextInt(n)+1;
5 Date
☆ date与String 格式的时间转换
//SimpleDateFormat类:改变时间的格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date=new Date();
//将日期格式转换成指定的字符串
String time = sdf.format(date);
System.out.println(time);//现在的时间以yyyy/MM/dd HH:mm:ss格式输出
//将格式化的字符串转换成日期对象
Date date=sdf.parse(“1995/07/1203:00:00”);
System.out.println(date);
6 File
java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
☆ 构造方法
- public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
- public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
- public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
☆ 常用方法
1 获取功能的方法
- public String getAbsolutePath() :返回此File的绝对路径名字符串。
- public String getPath() :将此File转换为路径名字符串。
- public String getName() :返回由此File表示的文件或目录的名称。
- public long length() :返回由此File表示的文件的长度。
** 绝对路径和相对路径**
- 绝对路径:从盘符开始的路径,这是一个完整的路径。
- 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
2 判断功能的方法
- public boolean exists() :此File表示的文件或目录是否实际存在。
- public boolean isDirectory() :此File表示的是否为目录。
- public boolean isFile() :此File表示的是否为文件。
3 创建、删除功能的方法
- public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
- public boolean delete() :删除由此File表示的文件或目录。
- public boolean mkdir() : 创建由此File表示的目录。
- public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
// 创建一级目录
Filef2=new File("newDir");
System.out.println("是否存在:"+f2.exists());// false
System.out.println("是否创建:"+f2.mkdir()); // true
System.out.println("是否存在:"+f2.exists());// true
// 创建多级目录
Filef3=new File("newDira\\newDirb");
System.out.println(f3.mkdir());// false
Filef4=new File("newDira\\newDirb");
System.out.println(f4.mkdirs());// true
☆ 目录的遍历
- public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
- public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
7 Properties
java.util.Properties 继承于Hashtable ,来表示一个持久的属性集。它使用键值结构存储数据,每个键及其对应值都是一个字符串。该类也被许多Java类使用,比如获取系统属性时,System.getProperties 方法就是返回一个Properties对象。
☆ 构造方法
- public Properties() :创建一个空的属性列表。
☆ 基本的存储方法
- public Object setProperty(String key, String value) : 保存一对属性。
- public String getProperty(String key) :使用此属性列表中指定的键搜索属性值。
- public Set< String> stringPropertyNames() :所有键的名称的集合。
☆ 与流相关的方法
- public void load(InputStream inStream): 从字节输入流中读取键值对。 参数中使用了字节输入流,通过流对象,可以关联到某文件上,这样就能够加载文本中的数据了。文本数据格式:
filename=a.txt
length=209385038
location=D:\\a.txt
小贴士:文本中的数据,必须是键值对形式,可以使用空格、等号、冒号等符号分隔。
Date补充
Date
- public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
- public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。
tips: 由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。
// 创建日期对象,当前的时间
System.out.println(new Date()); // Tue Jan 16 14:37:35 CST 2018
// 创建日期对象,把当前的毫秒值转成日期对象
System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970
- public long getTime() 把日期对象转换成对应的时间毫秒值。
DateFormat
java.text.DateFormat
是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。
java.text.DateFormat:是日期/时间格式化子类的抽象类
成员方法:
- String format(Date date) 按照指定的模式,把Date日期,格式化为符合模式的字符串
- Date parse(String source)把符合模式的字符串,解析为Date日期
- DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类SimpleDateFormat
参数pattern是一个字符串,代表日期时间的自定义格式。
格式规则
y | 年 |
---|---|
M | 月 |
d | 日 |
H | 时 |
m | 分 |
s | 秒 |
DateFormat format = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
- public String format(Date date)
:将Date对象格式化为字符串。
- public Date parse(String source)
:将字符串解析为Date对象。
eg:
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = "2018年12月11日";
Date date = df.parse(str);
System.out.println(date); // Tue Dec 11 00:00:00 CST 2018