第一章 String类
程序中所有双引号字符串,虽然没有new,但都是String对象。
特点
- 字符串的内容永不改变,是常量。
- 正是因为字符串不可改变,所以字符串可以共享使用。
- 字符串效果上相当于char[]字符数组,但底层原理是byte[]字节数组。
字符串的创建
public String()
:空白字符串public String(char[] array)
:字符数组创建字符串public Strign(byte[] array)
:字节数组创建字符串- 直接创建,是字符串对象。
package cn.itcast.day08.demo01;
public class Demo01String {
public static void main(String[] args) {
//第一种方法
String str1 = new String();
System.out.println(str1);//
//第二种方法
char[] arrayChar = { 'A','B','C' };
String str2 = new String(arrayChar);
System.out.println(str2);//ABC
//第三种方法
byte[] arrayByte = {97,98,99};
String str3 = new String(arrayByte);
System.out.println(str3);//abc
}
}
字符串的常量池
字符串常量池:程序中直接写双引号的字符串,就是在字符串常量池中。
对于基本数据类型:==是对数值的比较
对于引用数据类型:==是对地址值的比较
package cn.itcast.day08.demo01;
public class Demo02StringPool {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
char[] array = {'A', 'B', 'C'};
String str3 = new String(array);
System.out.println(str1 == str2);//true
System.out.println(str2 == str3);//false
System.out.println(str1 == str3);//false
}
}
常用方法
比较方法
public boolean equals(Object obj)
:参数时任何对象,只比较字符串的值。- 推荐括号里写变量
public boolean equalsIgnoreCase(String str)
:忽略大小写,对内容比较
获取方法
public int length()
:字符串中字符的个数public String concat(String str)
:字符串拼接,返回新的字符串public char charAt(int index)
:获取指定索引位置的单个字符public int indexOf(String str)
:查找参数字符串首次出现的索引位置,没有则返回-1。
截取方法
public String substring(int index)
:截取参数位置一直到字符串末尾,返回新的字符串public String substring(int beign,int end)
:截取[begin,end)中间的字符串
转换方法
public char[] toCharArray()
:将当前字符串拆分成字符数组作为返回值public byte[] getBytes()
:获取当前字符串底层的字节数组public String replace(CharSequence oldString,CharSequence newString)
:替换旧字符串,返回替换之后的新字符串。
分割方法
public String[] split(String regex)
:按参数的规则,将字符串分割成若干部分。参数是正则表达式
练习
- 定义一个方法,把数组[1,2,3]按指定格式拼接成一个字符串,格式如下:[word1#word2#word3]
- 键盘输入字符串,统计各种字符出现的次数。字符种类包括大写字母,小写字母,数字和其他。
第二章 静态static关键字
概述
- 可以修饰成员变量和成员方法
- 属于类,不单单是属于摸个对象,所以可以通过类进行调用。
定义和使用格式
类变量
每个对象都共享同一个类变量的值。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。
格式:static 数据类型 变量名;
静态方法
建议使用类名来调用,而不需要 创建类的对象。调用方式非常简单。
格式:
修饰符 static 返回值类型 方法名 (参数列表){
// 执行语句
}
- 注意事项
- 静态方法可以直接访问类变量和静态方法。
- 静态方法不能直接访问非静态。(内存中先有静态内容,然后才有非静态内容。)
- 静态方法中,不能使用this关键字。(this表示当前对象,静态方法直接通过类调用,不用对象)
- 对于本类当中的静态方法,可以省略类名称。
静态原理图解
静态变量的访问全程和类没有关系,只和类有关。
静态代码块
静态代码块:定义在成员位置,使用static修饰的代码块{ }。
- 位置:类中方法外。
- 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。
- 作用:给类变量进行初始化赋值。
格式:
public class ClassName{
static {
// 执行语句
}
}
第三章 Arrays类
提供大量数组相关的静态方法,实现数组的常用操作。
操作数组的方法
-
public static String toString(int[] a)
:返回指定数组内容的字符串表示形式。package cn.itcast.day08.demo01.demo04; import java.util.Arrays; public class Demo01ToString { public static void main(String[] args) { int[] arr = {10, 20, 30, 33, 49}; String s = Arrays.toString(arr); System.out.println(s);//[10, 20, 30, 33, 49] } }
-
public static void sort(int[] a)
:对指定的 int 型数组按数字升序进行排序package cn.itcast.day08.demo01.demo04; import java.util.Arrays; public class Demo02Sort { public static void main(String[] args) { int[] arr = {20, 30, 4, 65, 18, 41}; Arrays.sort(arr); System.out.println(Arrays.toString(arr));//[4, 18, 20, 30, 41, 65] } }
练习
-
使用Arrays想干的API,将一个随机字符串中的所有字符升序排列,并倒序打印。
package cn.itcast.day08.demo01.demo04; import java.util.Arrays; public class Demo03ArraysStringSort { public static void main(String[] args) { String str = "1ABD4e35ed2sh"; char[] arr = str.toCharArray(); Arrays.sort(arr); for (int i = arr.length - 1; i >= 0; i--) { System.out.print(arr[i]);//sheedDBA54321 } } }
第四章 Math类
类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具 类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。
基本运算的方法
public static double abs(double a)
:返回 double 值的绝对值。public static double ceil(double a)
:返回大于等于参数的最小的整数。public static double floor(double a)
:返回小于等于参数最大的整数。public static long round(double a)
:返回最接近参数的 long。(相当于四舍五入方法)
练习
- 使用Math相关的API,计算在
-10.8
到5.9
之间,绝对值大于6
或小于2.1
的整数有多少个
package cn.itcast.day08.demo01.demo04;
public class Demo04MathCount {
public static void main(String[] args) {
int start = (int) Math.ceil(-10.8);
//System.out.println(start);//-10
int count = 0;
int i = start;
while (i <= (int) Math.floor(5.9)) {
if (Math.abs(i) > 6 || Math.abs(i) < 2.1) {
count++;
System.out.println(i);
}
i++;
}
System.out.println(count);//9
}
}