文章目录
- 数组
- String类
- String 与new String()的区别
- "=="与equals的区别
- StringBuilder 与 String的区别
- StringBuilder的使用方法
- String类的常用方法
- 构造方法
- 重载
数组
数组是用于储存多个相同类型数据的集合。
举个例子:一间屋子里有许多书,杂乱无章,现在将书分门别类的排放:中国音乐类、计算机类、西方音乐类等。这样分类之后,查阅书籍就比较方便。图书馆图书分类也是用了数组这一思想。
数组的定义与使用
数组[] 数组名 = new 类型[常量表达式]
int[] arr = new int[5];
应用案例:遍历数组,输出学生成绩
import java.util.Scanner;
public class Array {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[5];
for(int i=0;i<5;i++) {
System.out.println("请输入第"+(i+1)+"个学生的成绩:");
int m = 0;
arr[i]=sc.nextInt();
}
for(int i=0; i<5; i++) {
System.out.println("学生"+(i+1)+"成绩为:"+arr[i]);
}
}
}
String类
String 与new String()的区别
public class mystrig {
public static void main(String args[]) {
String str1 = "Hello CSDN!";
String str2 = "Hello CSDN!";
String str3 = "Hello Git!";
String str4 = new String("Hello CSDN!");
System.out.println(str1==str2); //true
System.out.println(str1==str3);
System.out.println("------------------------------------");
System.out.println(str1==str4); //false
System.out.println(str2==str4); //false
}
}
由上面的案例我们可以发现:
str1str2输处true
str1str4输出false
解释:
(1)String str1是给str1赋值一个常量,当给str2赋值时(String str2)时,系统自动去常量区去找是否有相同内容的一个系统变量,如果有,则将这个系统变量的地址赋给str2。因此,str1与str2的地址是相同的,所以为true
(2)new String() 是在内存堆中,给String类型声明一块新的空间,只要有new关键字,就会分配新空间,并将空间的地址分配给新的变量。因此,str1与str4的地址并不相同,所以为false
(3)由此,也可以看出,== 是比较两个变量的地址
"=="与equals的区别
"=="与equals()都是判断条件,若判断为真,则输出true;若判断为假,则输出false。
区别:==是比较两个变量的地址,而equals()是比较两个变量的值
public class myequals {
public static void main(String args[]) {
String str1 = "中国象棋";
String str2 = new String("中国象棋");
System.out.println("==判断是不能添加字符串输出的"+str1==str2);
System.out.println("equals为:"+str1.equals(str2));
}
}
并且“==判断是不能添加字符串的。”
StringBuilder 与 String的区别
StringBuilder与String都可用来定义字符串变量
区别:
StringBuilder在增加一串字符串后,只是在后面接个尾巴,地址不改变
String在增加一串字符串之后,系统会给它分配一个新的空间和地址
注:如果是经常要改变的字符串,StringBuilder是个更好的选择,更加高效
StringBuilder的使用方法
StringBuilder的使用方法与String的方法略有不同
public class StringBuderBuffer {
public static void main(String[] args) {
StringBuilder sb= new StringBuilder("Hello Android");
String str = new String("I lvoe Android");
// System.out.println(sb==sb.append("test"));//增加字符串
// System.out.println(str==str.concat("test"));//增加字符串
// System.out.println(sb.insert(0,"好"));//在指定位置增加指定字符串
// System.out.println(sb.reverse());//逆序
System.out.println(sb.substring(4));//从start开始截取,包含start
System.out.println(sb.substring(4,6));//[4,6)
//从StringBuilder向String转换;
String str1=str.toString();
//从String向StringBuilder转换;
StringBuilder sb2 = new StringBuilder(str1);
System.out.println(sb2);
}
}
======================
String类的常用方法
public class StringDemo2 {
public static void main(String args[]) {
String str="Hello world!";
String str1="Hello world!";
System.out.println("str的字符串长度为:"+str.length());
System.out.println("str的字符串的子串1为:"+str.substring(1));//字符串从0开始
System.out.println("str的字符串字串2为:"+str.substring(0, 5));//(起始,终止)左闭右开
System.out.println("str的字符串是否以指定后缀结束:"+str.endsWith("d!"));
System.out.println("返回指定字符串在此字符串中第一次出现的的索引:"+str.indexOf("o"));
System.out.println("返回指定字符串在此字符串中最后一次出现的的索引:"+str.lastIndexOf('o'));
System.out.println("获取第某个索引的字符:"+str.charAt(3));
System.out.println("将字符串连接到str后输出"+str.concat("+hero!"));
System.out.println("清除左右两端的空格:"+str.trim());
System.out.println("比较两个字符串是否相等:"+str.equals(str1));
System.out.println("替换指定字符串"+str.replace("hello", "bye"));
System.out.println("判断str是否以指定字符串开始"+str.startsWith("hello"));
System.out.println("使字符串全部小写"+str.toLowerCase());
}
}
构造方法
1.当一个对象被创建时候,构造方法用来初始化该对象。
2.构造方法和它所在类的名字相同,但构造方法没有返回值(连void也不能有)。
注:(void是空类型返回值;void 是 java.lang 中的类;void 类是一个不可实例化的占位符类,它保持一个对代表 Java 关键字 void 的 Class 对象的引用。)
3.通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。
4.不管是否自定义构造方法,所有的类都有构造方法
因Java自动提供了一个默认构造方法,默认构造方法的访问修饰符和类的修饰符相同(类为 public,构造函数也为 public;类改为 protected,构造函数也改为 protected)。
5.一旦你定义了自己的构造方法,默认构造方法就会失效。
构造方法:
public Person(String name,int age,String phone) {
this.name=name;
this.age=age;
this.phone=phone;
}
重载
方法的重载:
1.方法名一致,对于参数来说:个数不一致
构造方法的重载(对于其他方法也一样):
public Person(String name, int age, String phone, String gendar, String address) {
// super();
this.name = name;
this.age = age;
this.address = address;
this.phone = phone;
this.gendar = gendar;
}
public Person(String name,int age,String phone) {
this.name=name;
this.age=age;
this.phone=phone;
}
2.方法名一致,对于参数个数一致,但参数定义的顺序不一致
public void showInfo(String name,int age) {//传两个参数
System.out.println(this.getName()+",年龄是:"+this.getAge());
}
public void showInfo(int age,String name) {//传两个参数
System.out.println(this.getName()+",年龄是:"+this.getAge());
}
3.对于方法名一致,方法返回类型不一致的,不构成方法的重载_报错:Duplicate method