面向对象
一、内部类
1、内部类
类部内就是在一个类中,再编写另一个类。内部类的种类:成员内部类、静态内部类、局部内部类、匿名内部类
a、匿名内部类
创建子类的时候可以使用匿名内部类,使你的代码更加简洁,匿名内部类只能被使用一次
b、成员内部类(了解)
c、局部内部类(了解)
内部类不光可以直接定义在外部类中作为成员内部类,也可以定义在方法中,作为局部内部类。
局部内部类也叫区域内嵌类,局部内部类与成员内部类类似,不过,区域内嵌类是定义在一个方法中的内嵌类。
主要特定有:
- 局部内部类只能在对应方法中访问,在方法外无效
- 不能使用private,protected,public修饰符。
- 不能包含静态成员
- 局部内部类如果想要访问方法中的局部变量时,局部变量必须是常量。因为局部变量时分配在栈中,而局部内部类是分配在堆中的,有可能出现这样的情况,外部类的方法执行完了,内存被回收了,但是局部内部类可能还在,所以在访问局部变量时,做了一个拷贝将局部变量拷贝到局部内部类所在的堆中。为了保证数据的完整性,所以这里被拷贝的变量不允许再做修改。
二、String
1、获取方法
方法 | 说明 |
---|---|
int length() | 获取字符串的长度(*) |
char charAt(int index) | 获取指定位置的字符(index 下标 ) |
int indexOf(String str) | 获取指定字符首次出现的位置 |
int lastIndexOf(String str) | 获取指定字符最后一次出现的位置 |
String s = "hello";
/**
* 一.获取方法
*/
//1、获取长度
int len = s.length();
System.out.println("字符串的长度为:"+len);
//2.获取指定下标位置的字符(字符串中的每个字符都有下标,下标从0开始)
char c = s.charAt(4);
System.out.println(c);
//3.获取指定字符首次出现的下标
int index = s.indexOf("l");
System.out.println(index);
2、判断方法(*)
方法 | 说明 |
---|---|
boolean endswith(String str) | 测试此字符串是否以指定的后缀结束 |
boolena isEmpty() | 字符串长度是否为0 jdk1.6新特性 |
boolean contains(CharSequences s) | 是否包含指定值 应用:搜索 |
boolean equals(Object objec) | 判断两个字符串值是否相等 |
boolean equalsIgnoreCase(String str) | 忽略大小写是否相等 |
startsWith(String prefix) | 测试此字符串是否以指定的前缀开始。 |
/**
* 二.判断方法
*/
//1.equals
String s1 = "world";
boolean r1 = s1.equals(s);
System.out.println(r1);
String s2 = "www.woniuxy.com";
//2.判断字符串是否以指定的后缀结束
boolean r2 = s2.endsWith(".com");
System.out.println(r2);
//3.判断字符串是否为空--判断长度
String s3 = "";
boolean r3 = s3.isEmpty();
System.out.println(r3);
//4.判断字符串是否包含指定的值
boolean r4 = s2.contains("wo");
System.out.println(r4);
//5.比较两个字符串是否相等,并忽略大小写
String s4 = "WWW.WoniuXy.Com";
boolean r5 = s4.equalsIgnoreCase(s2);
System.out.println(r5);
//6.判断字符串是否以指定的内容开头
boolean r6 = s2.startsWith("www.");
System.out.println(r6);
3、转换方法
方法 | 说明 |
---|---|
String toUpperCase() | 小写转大写 |
String toLowerCase() | 大写转小写 |
char[] toCharArray() | 将字符串转换为字符数组 |
new String(char[] array) | 将字符数组转为字符串 |
/**
* 三.转换
*/
String s5 = "Hello";
//1.小写转大写
String newS1 = s5.toUpperCase();
System.out.println(newS1);
//2.大写转小写
String newS2 = s5.toLowerCase();
System.out.println(newS2);
//3.字符串转字符数组
char[] arr = s5.toCharArray();
//字符数组可以直接打印
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//4.字符数组转字符串
String newStr = new String(arr);
System.out.println(newStr);
4、其他方法(*)
方法 | 说明 |
---|---|
String replace(char oldChar, char newChar) | 使用指定的值替换替换此字符串所有匹配的字符 |
String[] split(String regex) | 根据指定字符将字符串切割为数组 |
String substring(int beginIndex) | 从指定位置截取到最后 |
String substring(int beginIndex, int endIndex) | 截取指定长度的字符串 |
String trim() | 去除字符串首尾空格 |
/**
* 四.其它方法
*/
String str = "woniuxy";
//1.替换--被替换的内容,替换后的内容
String newStr1 = str.replace("woniu", "***");
System.out.println(newStr1);
//2.切割(注意,不能对点和*进行切割)
String str2 = "aa-bb-cc-dd";
String[] arr2 = str2.split("-");
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]);
}
//3.截取
String s6 = "www.woniuxy.com";
//a.从指定下标截取到字符串末尾
String newS6 = s6.substring(3);
System.out.println(newS6);
//b.指定截取的下标区间--不包含结束下标
String newS7 = s6.substring(3, 7);
System.out.println(newS7);
//4去除字符串的首尾空格
String s7 = " aaa bbb cc ";
String newS8 = s7.trim();
System.out.println(newS8);
//5.去除字符串的所有空格
String newS9 = s7.replace(" ", "");
System.out.println(newS9);
6、补充
a.字符串的遍历
/**
* 字符串的遍历
*/
String str8 = "www.xxxx.com";
//方式一
for(int i=0;i<str8.length();i++) {
char b = str8.charAt(i);
System.out.println(b);
}
System.out.println("----------------------");
//方式二
char[] arr3 = str8.toCharArray();
for (int i = 0; i < arr3.length; i++) {
System.out.println(arr3[i]);
}