每日一练
找子串出现的所有下标位置
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);
}
}
- 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);
- }
- }
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");
}
}
- 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");
- }
- }
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+"号 士兵阵亡");
}
}
- 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+"号 士兵阵亡");
- }
- }
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()
- 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()
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类
加载父类,父类的静态变量分配内存
加载子类,子类的静态变量分配内存
父类静态变量赋值运算,和静态初始化块
子类静态变量赋值运算,和静态初始化块
创建对象
创建父类对象,父类的非静态变量分配内存
创建子类对象,子类的非静态变量分配内存
执行父类非静态变量赋值运算
执行父类构造方法
执行子类非静态变量赋值运算
执行子类构造方法