文字列 文字列
- String クラスは、不変の文字シーケンスとしても知られています。
- 文字列は java.lang パッケージ内にあり、Java はデフォルトで java.lang パッケージの下にあるすべてのクラスをインポートします。
- String 型は Unicode 文字シーケンスで構成されます。たとえば、文字列「java」は 4 つの Unicode 文字「j」、「a」、「v」、「a」で構成されます。
public class TestString {
public static void main(String[] args) {
String s0=null;
String s1=""; //空字符串
String s2="java";
String s3=new String("java");
System.out.println(s1.length());
System.out.println(s2.length());
System.out.println(s0.length());
}
}
s0 と s1 は同じものではありません。空の文字列にも何かがあり、その文字数は 0 ですが、null には文字数がありません。ここでは、null ポインタ例外エラーが報告されます。
文字列は、equals メソッドをオーバーライドします。
定数プール
実際には、グローバル文字定数プール、クラスファイル定数プール、ランタイム定数プールの 3 種類があります。
String g1="中单无敌";
String g2="中单无敌";
String g3=new String("中单无敌");
System.out.println("g1==g2:"+(g1==g2));
System.out.println("g1==g3:"+(g1==g3));
System.out.println("g1.equals(g3):"+g1.equals(g3));
g1 と g3 の違いは、g3 はヒープ内にオブジェクトを作成することです。
内部クラス
別のクラスの中にクラスを定義することを内部クラスと呼びます
2つの主要なポイント
- 内部クラスはより適切なカプセル化を提供し、外部クラスのみがそれらにアクセスでき、同じパッケージ内の他のクラスは直接アクセスできません。
- 内部クラスは外部クラスのプライベート プロパティに直接アクセスできますが、外部クラスは内部クラスの内部プロパティに直接アクセスできません。
配列
作成方法
int[] s0;
s0=new int[10];
int[] s1 = new int[4];
int s2[]=new int[4];
3種類の初期化
package com.itbaizhan;
public class Test02 {
public static void main(String[] args) {
//静态初始化
int[] a={1,2,3};
Man mans[] = {
new Man(001,20),
new Man(002,21),
new Man(003,23)
};
//动态初始化
int[] s = new int[2];
s[0]=5;
s[1]=6;
//数组默认初始化,会和对象一样创建就有个默认值
}
}
2つの横断
int[] s = new int[5];
for (int i =0;i<s.length;i++){
s[i]=i+1;
}
//foreche,这种方法只能读取,不能对数组元素进行操作
for (int x:s) {
System.out.println(x);
}
配列のコピー
public class Test04 {
public static void main(String[] args) {
String[] s={"阿里","尚学堂","京东","腾讯"};
String[] sBak = new String[6];
System.arraycopy(s,0,sBak,1,s.length);
for (int i=0;i<sBak.length;i++) {
System.out.print(sBak[i]+"\t");
}
}
}
Arrays ツール クラスの一般的に使用されるメソッド
package com.itbaizhan;
import java.util.Arrays;
/**
* 测试Arrays类
*/
public class Test05 {
public static void main(String[] args) {
int[] a={1,2,6,4,3};
System.out.println(a);
//显示a数组的元素
System.out.println(Arrays.toString(a));
//排序
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//二分法查找(需要先排序,排以后才能使用)
System.out.println("元素4的索引:"+Arrays.binarySearch(a,4));
//填充数组
Arrays.fill(a,1,a.length,30);
System.out.println(Arrays.toString(a));
}
}
JavaBeans と配列を使用してデータを保存する
オリジナルの言葉遣い
public class Test07 {
public static void main(String[] args) {
Object[] a1={001,"老高",18,"讲师","2-14"};
Object[] a2={002,"小博",18,"学生","10-10"};
Object[] a3={003,"小八",18,"助教","5-5"};
Object[][] es = new Object[3][];
es[0]=a1;
es[1]=a2;
es[2]=a3;
for (Object[] x:es
) {
System.out.println(Arrays.toString(x));
}
}
}
ジャワビーンの後
package com.itbaizhan;
public class Test08 {
public static void main(String[] args) {
Emp[] emps = {
new Emp(001,"老高",18,"讲师","2-14"),
new Emp(002,"小博",18,"学生","10-10"),
new Emp(003,"小八",18,"助教","5-5")
};
for(Emp e:emps){
System.out.println(e.toString());
}
}
}
class Emp{
private int id;
private String name;
private int age;
private String job;
private String hiredate;
@Override
public String toString() {
return "Emp{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", job='" + job + '\'' +
", hiredate='" + hiredate + '\'' +
'}';
}
public Emp(int id, String name, int age, String job, String hiredate) {
this.id = id;
this.name = name;
this.age = age;
this.job = job;
this.hiredate = hiredate;
}
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;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getHiredate() {
return hiredate;
}
public void setHiredate(String hiredate) {
this.hiredate = hiredate;
}
}
同等のインターフェース
package com.itbaizhan;
import java.util.Arrays;
public class Test09 {
public static void main(String[] args) {
Man2[] msMans={
new Man2(3,"a"),
new Man2(60,"b"),
new Man2(3,"c")
};
System.out.println(Arrays.toString(msMans));
Arrays.sort(msMans);
System.out.println(Arrays.toString(msMans));
}
}
class Man2 implements Comparable{
int age;
int id;
String name;
public Man2(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public String toString() {
return this.name;
}
@Override
public int compareTo(Object o) {
Man2 man2= (Man2)o;
if(this.age<man2.age){
return -1;
}
if(this.age>man2.age){
return 1;
}
return 0;
}
}
一番すごいと思うのはこの書き換えで、ObjectクラスのtoStringとComparableインターフェースのcompareToメソッドを書き換えて、ArraysツールクラスのToStringメソッドとsortメソッドを呼び出しています。