java学习第8天,主要讲解了String类、static关键字、Arrays类、Math类的常用方法,不用死记硬背,后期使用时查API和百度搜索使用,下附今天课堂笔记总结
day08【String类、static关键字、Arrays类、Math类】
1、能够使用String类的构造方法创建字符串对象
字符串的特点:
字符串是常量,一旦被创建用不可变
正因为字符串不可改变,所以字符串是可以共享使用的
字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组
创建字符串的常见3+1种方式
三种构造方法:
public String();创建一个空白字符串,不含有任何内容
String str = new String();
System.out.println("str:"+str);
public String(char[] array);根据字符数组的内容,来创建对应的字符串
char[] char = {"A","B","C","D","E"};
String str = new String(char);
System.out.println("str:"+str);
public String(byte[] array);根据字节数组的内容,来创建对应的字符串
byte[] byte = {97,98,99,100};
String str = new String(byte);
System.out.println("str:"+str);
一种直接创建:
String str = "Hello";
2、能够使用文档查询String类的判断方法
能够明确String类的构造方法创建对象,和直接赋值创建字符串对象的区别
字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中
对于基本类型来说:== 是进行数值的比较
对于引用类型来说:== 是进行【地址值】的比较
==是进行对象的地址值比较,如果确实需要字符串内容比较,可以使用如下方法:
public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同才会为true,否则返回false
equals方法注意事项:
任何对象都能使用Object进行接收
equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样
如果比较双放一个常量一个变量,推荐把常量字符串写在前面
推荐:"abc".equals(str) 不推荐:str.equals("abc")
public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小写
3、能够使用文档查询String类的获取方法
public int length():获取字符串当中含有的字符个数,拿到字符串长度
public String concat(String str):将指定的字符串连接到该字符串的末尾,返回新的字符串
public char charAt(int index):获取指定索引位置的单个字符(索引从0开始)
public in indexOf(Stirng str):查找参数字符串在本字符串当中首次出现的索引位置,如果没有,返回-1值
public Stirng substring(int index):截取从参数位置一直到字符串末尾,返回新字符串
public String substring(int begain,in end):截取从begain开始,一直到end结束,中间的字符串。注意:[begain,end),左闭右开区间
字符串的分割方法:
public Stirng[] split(String regex):按照参数的规则,将字符串切分成为若干部分
注意事项:
split方法的参数其实是一个“正则表达式”,今天要注意,如果按照引文据点“.”进行切分,必须写“\\.”才能切分成功
4、能够使用文档查询String类的转换方法
public char[] toCharArray():将当前字符串拆分成为字符数组作为返回值
public byte[] getBytes():把字符串转换为字节数组
public String replace(CharSequence oldStirng,CharSequence new String);
将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串
CharSequence意思就是可以接收字符串类型
5、能够理解static关键字
一旦用了static关键字,那么这样的内容不在属于对象自己,而是属于类的,所以凡是本来的对象,都共享同一份
一旦使用static修饰成员方法,那么这就成为了静态方法。静态方法不属于对象,而是属于类
如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用
对于静态方法来说,可以通过对象名进行调用,也可以通过类名称来调用(推荐使用类名称来进行调用)
对于本来当中的静态方法,可以省略类名称,直接写方法名称调用
注意事项:
静态方法可以直接访问类变量和静态方法。
静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
静态只能访问静态,不能访问非静态(因为在内存中【先】有的静态内容,【后】有的非静态内容)
静态方法中不能使用this关键字(this代表当前对象,通过谁调用的方法,谁就是当前对象,静态方法中没有对象,而是通过类名称直接调用)
根据类名称访问静态成员变量的时候,全程和对象就没关系,只和类有关系
package com.itheima.test01;
public class Student {
private int id;
private String name;
private int age;
static String room;//被static修饰,所有对象共享共一份,所有学生都在同一间教室
private static int idCount = 0;//学号计数器,每当new了一个新对象,计数器自增1
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
this.id = ++idCount;//由于学号要求new对象时自动增加1,所有不能作为参数写在Student构造方法参数列表中
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package com.itheima.test01;
import static com.itheima.test01.Student.room;
public class StaticStudentTest01 {
public static void main(String[] args) {
//创建学生对象
Student sd1 = new Student("赵丽颖",29);
//给学生对象设置教室,因room被static修饰,所以只创建一次,其他学生对象直接调用即可
Student.room = "804教室";
Student sd2 = new Student("唐嫣",30);
System.out.println("学号:"+sd1.getId()+",姓名:"+sd1.getName()
+",年龄:"+sd1.getAge()+",所在教室:"+Student.room);
System.out.println("学号:"+sd2.getId()+",姓名:"+sd2.getName()
+",年龄:"+sd2.getAge()+",所在教室:"+Student.room);
}
}
6、能够写出静态代码块的格式
public class 类名称{
static{
//静态代码块内容
}
}
特点:当第一次用到本类时,静态代码块执行唯一的一次
静态内容总是优先于非静态,所以静态代码块比构造方法先执行
静态代码块的典型用途:
用来一次性的对静态成员变量进行赋值
7、能够使用Arrays类操作数组
java.util.Arrays是一个与数组相关的工具类,里面提供了大量静态方法,用来实现数组常见的操作
public static String toString(数组):将参数数组变成字符串(默认格式:[元素1,元素2,元素3...])
public static void sort(数组):按照默认升序(从小到大)对数组的元素进行排序
如果是数值,sort默认按照升序从小到大
如果是字符串,sort默认按照字母升序
如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持(今后学习)
public static void main(String[] args) {
int[] array = {1, 5, 2, 8, 3, 4};
//将int[]数组按照默认格式变成字符串
String s = Arrays.toString(array);
System.out.println(s);//[1, 5, 2, 8, 3, 4]
//把数组内的元素按照升序排列
Arrays.sort(array);
System.out.println(Arrays.toString(array));//[1, 2, 3, 4, 5, 8]
}
8、能够使用Math类进行数学运算
public static double abs(double a) :返回 double 值的绝对值。
double d1 = Math.abs(‐5); //d1的值为5
double d2 = Math.abs(5); //d2的值为5
public static double ceil(double a) :向上取整,返回大于等于参数的最小的整数。
double d1 = Math.ceil(3.3); //d1的值为 4.0
double d2 = Math.ceil(‐3.3); //d2的值为 ‐3.0
double d3 = Math.ceil(5.1); //d3的值为 6.0
public static double floor(double a) :向下取整,返回小于等于参数最大的整数。
double d1 = Math.floor(3.3); //d1的值为3.0
double d2 = Math.floor(‐3.3); //d2的值为‐4.0
double d3 = Math.floor(5.1); //d3的值为 5.0
public static long round(double a) :返回最接近参数的 long。(相当于四舍五入方法)
long d1 = Math.round(5.5); //d1的值为6.0
long d2 = Math.round(5.4); //d2的值为5.0
Math.PI代表近似的圆周率常量(double)
|
|