每日一练
找子串出现的所有下标位置
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)
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静态关键字
静态属于类,不属于对象
共享数据
士兵计数
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 节省内存,只有一个内存地址
常量命名习惯
全大写
单词之间加下划线
对象的创建过程
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()
第一次用到A和B类
加载父类,父类的静态变量分配内存
加载子类,子类的静态变量分配内存
父类静态变量赋值运算,和静态初始化块
子类静态变量赋值运算,和静态初始化块
创建对象
创建父类对象,父类的非静态变量分配内存
创建子类对象,子类的非静态变量分配内存
执行父类非静态变量赋值运算
执行父类构造方法
执行子类非静态变量赋值运算
执行子类构造方法