静态

每日一练

找子串出现的所有下标位置

 

  1. package day0901;
  2. import java.util.Arrays;
  3. import java.util.Scanner;
  4. public class Test1 {
  5. public static void main(String[] args) {
  6. System.out.print("输入字符串");
  7. String s = new Scanner(System.in).nextLine();
  8. System.out.print("输入子串");
  9. String find = new Scanner(System.in).nextLine();
  10. int[] a = find(s,find);
  11. System.out.println(Arrays.toString(a));
  12. }
  13. private static int[] find(String s, String find) {
  14. int[] a = new int[s.length()];
  15. int index = 0;
  16. int i = 0;
  17. while (true)
  18. {
  19. index = s.indexOf(find,index);
  20. if(index == -1) break;
  21. a[i++] = index;
  22. index++;
  23. }
  24. return Arrays.copyOf(a,i);
  25. }
  26. }
package day0901;

 

import java.util.Arrays;

import java.util.Scanner;

 

public class Test1 {

    public static void main(String[] args) {

        System.out.print("输入字符串");

        String s = new Scanner(System.in).nextLine();

 

        System.out.print("输入子串");

        String find = new Scanner(System.in).nextLine();

 

        int[] a = find(s,find);

        System.out.println(Arrays.toString(a));

    }

 

    private static int[] find(String s, String find) {

        int[] a = new int[s.length()];

        int index = 0;

        int i = 0;

        while (true)

        {

            index = s.indexOf(find,index);

            if(index == -1) break;

            a[i++] = index;

            index++;

        }

        return Arrays.copyOf(a,i);

    }

}

猜字母

 

StringBuilder

Delete(start,end)

 

charAt()

setCharAt(I,c)

 

  1. package day0804;
  2. import java.util.Random;
  3. public class GuessLetterGame extends GuessGame {
  4. @Override
  5. public String suiji() {
  6. StringBuilder sb = new StringBuilder("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
  7. for (int i=0;i<5;i++)
  8. {
  9. int j = i + new Random().nextInt(26-i);
  10. char t = sb.charAt(i);
  11. sb.setCharAt(i,sb.charAt(j));
  12. sb.setCharAt(j,t);
  13. }
  14. sb.delete(5,26);
  15. return sb.toString();
  16. }
  17. @Override
  18. public void tishi() {
  19. System.out.println("已经产生了5个不同的大写字母");
  20. }
  21. @Override
  22. public String bijiao(String result, String input) {
  23. int a = 0;
  24. int b = 0;
  25. for(int i=0;i<5;i++)
  26. {
  27. for (int j=0;j<5;j++)
  28. {
  29. if(result.charAt(i) == input.charAt(j))
  30. {
  31. if(i==j) a++;
  32. else b++;
  33. }
  34. }
  35. }
  36. return a+"A"+b+"B";
  37. }
  38. @Override
  39. public boolean caidui(String result) {
  40. return result.equals("5A0B");
  41. }
  42. }
package day0804;

 

import java.util.Random;

 

public class GuessLetterGame extends GuessGame {

    @Override

    public String suiji() {

        StringBuilder sb = new StringBuilder("ABCDEFGHIJKLMNOPQRSTUVWXYZ");

        for (int i=0;i<5;i++)

        {

            int j = i + new Random().nextInt(26-i);

            char t = sb.charAt(i);

            sb.setCharAt(i,sb.charAt(j));

            sb.setCharAt(j,t);

        }

        sb.delete(5,26);

        return sb.toString();

    }

 

    @Override

    public void tishi() {

        System.out.println("已经产生了5个不同的大写字母");

    }

 

    @Override

    public String bijiao(String result, String input) {

        int a = 0;

        int b = 0;

        for(int i=0;i<5;i++)

        {

            for (int j=0;j<5;j++)

            {

                if(result.charAt(i) == input.charAt(j))

                {

                    if(i==j) a++;

                    else b++;

                }

            }

        }

        return a+"A"+b+"B";

    }

 

    @Override

    public boolean caidui(String result) {

        return result.equals("5A0B");

    }

}

JVM虚拟机内存分区

STATIC静态关键字

静态属于类,不属于对象

共享数据

 

士兵计数

  1. package day0903;
  2. import java.util.Random;
  3. public class Soldier {
  4. public int id;
  5. public int blood = 100;
  6. //静态士兵计数变量
  7. static int counts = 1;
  8. public Soldier(){
  9. this.id = Soldier.counts;
  10. ++counts;
  11. System.out.println("构造方法");
  12. }
  13. public void go()
  14. {
  15. System.out.println(id+"号 士兵前进");
  16. }
  17. public void ac()
  18. {
  19. if(blood == 0){
  20. System.out.println(id+"号士兵已经阵亡");
  21. return;
  22. }
  23. System.out.println(id+"号 士兵进攻");
  24. int d = new Random().nextInt(10);
  25. this.blood -= d;
  26. if(this.blood < 0 ) this.blood = 0;
  27. System.out.println("血量:"+blood);
  28. if (blood == 0) System.out.println(id+"号 士兵阵亡");
  29. }
  30. }
package day0903;

 

import java.util.Random;

 

public class Soldier {

    public int id;

    public int blood = 100;

 

    //静态士兵计数变量

    static int counts = 1;

 

    public Soldier(){

        this.id = Soldier.counts;

        ++counts;

        System.out.println("构造方法");

    }

 

    public void go()

    {

        System.out.println(id+"号 士兵前进");

    }

 

    public void ac()

    {

        if(blood == 0){

            System.out.println(id+"号士兵已经阵亡");

            return;

        }

        System.out.println(id+"号 士兵进攻");

        int d = new Random().nextInt(10);

        this.blood -= d;

        if(this.blood < 0 ) this.blood = 0;

        System.out.println("血量:"+blood);

        if (blood == 0) System.out.println(id+"号 士兵阵亡");

    }

}

工具方法

Math.sqrt()

 

Final

修饰常量:值不可变

方法:方法不能被子类重写

:不能被子类继承

 

常量:static final

final不可变

Static 节省内存,只有一个内存地址

 

常量命名习惯

全大写

单词之间加下划线

 

对象的创建过程

  1. class A {
  2. int v1 = 1;
  3. static int v2 = 2;
  4. static {
  5. }
  6. public A() {
  7. }
  8. }
  9. class B extends A {
  10. int v3 = 3;
  11. static int v4 = 4;
  12. static {
  13. }
  14. public B() {
  15. }
  16. }
  17. new B()
class A {

   int v1 = 1;

   static int v2 = 2;

   static {

}

public A() {

}

}

 

class B extends A {

   int v3 = 3;

   static int v4 = 4;

   static {

}

public B() {

}

}

 

new B()

第一次用到AB

加载父类,父类的静态变量分配内存

加载子类,子类的静态变量分配内存

父类静态变量赋值运算,和静态初始化块

子类静态变量赋值运算,和静态初始化块

创建对象

创建父类对象,父类的非静态变量分配内存

创建子类对象,子类的非静态变量分配内存

执行父类非静态变量赋值运算

执行父类构造方法

执行子类非静态变量赋值运算

执行子类构造方法