Java(第五周)
一、构造方法
构造方法格式:
权限 构造方法名(参数列表)
{
}
方法的名字必须和类的名字完全一致。
构造方法不允许写返回值类型,void也不能写
构造方法和一般方法的区别
- 构造方法在对象创建时就执行了,而且只执行一次。
- 一般方法是在对象创建后,需要使用时才被对象调用,并且可以被多次调用。
this关键字:
构造方法调用格式:
this(参数列表);
super关键字
super( )调用的是父类的空参数构造
super(参数)调用的是父类有参数的构造方法
子类的构造方法,有一个默认添加的构造方法
子类构造方法的第一行,有一个代码super( )
public Student( ){
super( );
}
子类中所有的构造方法,无论重载多少个,第一行必须是super()
如果子类有多个构造方法,子类任意调用一个就好
无论如何,子类的所有构造方法,直接、间接必须调用到父类构造方法。子类的构造方法什么都不写,默认的构造方法第一行super();
===============================================================
二、字符串
字符串是常量
字符串的本质是一个字符的数组
String(byte[ ] bytes)传递字节数组;字节数组转换为字符串;查询编码表
String(byte[ ] bytes,int offest,int length):字节数组的一部分转换为字符串;查询编码表
offest:数组的起始索引 length:个数
package cn.itcast.demo02;
public class StringDemo3 {
public static void main(String[] args) {
function();
}
public static void function() {
byte[] bytes = {97,98,99,100};
String s = new String(bytes);
System.out.println(s); //abcd
byte[] bytes1 = {65,66,67,68,69};
String s1 = new String(bytes1,1,4);
System.out.println(s1); //BCDE
}
}
String(char[ ] value) :将字符数组转换为字符串;字符数组的参数,不查询编码表
public static void function_1() {
char[] ch = {'a','1','苗','d','f'};
String s2 = new String(ch);
System.out.println(s2);
String s3 = new String(ch,1,3);
}
}
String类的方法查找
1.获取长度:String.length
String s = "asfafajhoc12snp面";
int length = s.length();
2.获取字符串的一部分:String substring(int beginIndex,int endIndex )
*包含头,不包含尾
String substring(int beginIndex): 包含头和后面的全部
String s1 = "how are you";
s1 = s1.substring(2,7);
System.out.println(s1); //w are
3.将字符串转为字符数组:getbytes
String s2 = "abcd";
byte[] bytes = s2.getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]); //97 98 99 100
4.将字符串转为字符数组:char[ ] toCharArray()
String s3 = "maio";
char[] ch = s3.toCharArray();
for (int i = 0; i < ch.length; i++) {
System.out.println(ch[i]);//m a i o
}
5.计数器
public class StringTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
getCount(str);
}
public static void getCount(String str) {
int upper = 0;
int lower = 0;
int digit = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if(c>=65 && c<=90) {
upper++;
}
else if(c>=97 && c<=122) {
lower++;
}
else if(c>=48 && c<=57){
digit++;
}
}
System.out.println(upper); //4
System.out.println(lower); //4
System.out.println(digit); //5
}
}
字符串出现次数
public static int getStringCount(String str,String key) {
int count = 0;
int index = 0;
while(( index = str.indexOf(key)) !=-1 ) {
count++;
str = str.substring(index+key.length());
}
return count;
}
}
StringBufferzi字符串的缓冲器对象
StringBuffer类方法insert
6.insert(int index,任意类型):将任意类型数据,插入到缓冲区的指定索引上。
public static void function_2() {
StringBuffer buffer = new StringBuffer();
buffer.append("abcdef");
buffer.insert(3, 6.23);
System.out.println(buffer); //abc6.23def
}
7.repalce(int strat,int end,String str):将指定的索引范围内的所有字符,替换成新的字符串。
public static void function_3() {
StringBuffer buffer = new StringBuffer();
buffer.append("abcdef");
buffer.replace(1, 4, "Q");
System.out.println(buffer); //aQef
}
8.reverse( ):将缓冲区的字符反转。
public static void function_4() {
StringBuffer buffer = new StringBuffer();
buffer.append("abcdef");
buffer.reverse();
System.out.println(buffer); //fedcba
}
9.String toString( ) 继承Obejct,重写toString( ):将缓冲区所有的字符变成字符串
public static void function_5() {
StringBuffer buffer = new StringBuffer();
buffer.append("abcdef");
buffer.append(12345);
String s = buffer.toString();
System.out.println(s); //abcdef12345
}
10.StringBuilder类:StringBuilder比StringBuffer快
===============================================================
三、正则表达式
1.正则表达式
正则表达式是一个字符串。使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。