Java第六天

  1. 二维数组
  • 定义二维数组的语法:
T[][] x = new T[size1][size2];
T[][] y = new T[size][];
T[][] z = {{v1, v2}, {v3, v4, v5, v6}, {v7}};
T[][] x = new T[size1][size2];
T[][] y = new T[size][];
T[][] z = {{v1, v2}, {v3, v4, v5, v6}, {v7}};
  • 二维数组的应用场景:表格、矩阵、棋盘、2D游戏中的地图。
  1. 字符串用法及常用方法
  • 字符串对象的创建
String s1 = "Hello";
    String s1 = new String("Hello");
    String s1 = "Hello";
    String s1 = new String("Hello");
  • 字符串常用方法
  • equals:比较两个字符串内容是否相同
  • equalsIgnoreCase:忽略大小写比较两个字符串内容是否相同
  • compareTo:比较两个字符串的大小
  • length:计算字符串的长度
  • concat:字符串连接
  • charAt:从字符串中取指定位置的字符
  • indexOf/lastIndexOf:字符串的匹配
  • trim:修剪字符串左右两端的空白
  • toUpperCase/toLowerCase:将字符串变成大写/小写
  • substring:从字符串中取指定位置的子串
  • startsWith/endsWith:判断字符串是否以指定的字符串开头/结尾
  • replace:将字符串中指定内容替换为另外的字符串

extra:字符串常用方法

package com.tara;
/**
 * 
 * @author tara
 *
 */
public class StringMethod {
    public static void main(String[] args) {
        String str1 = "Hello"; //存储在静态区(static)
        String str2 = new String("Hello"); //str2为引用类型,str2存储的是引用的String对象的地址,在栈(stack)中;String对象存储在堆(heap)中
        
        System.out.println((str1 == str2));
        
        System.out.println(str1.equals(str2));  //比较两个字符串
        System.out.println(str1.equalsIgnoreCase(str2)); //比较两个字符串,忽略大小写
        
        System.out.println(str1.length()); //返回字符串的长度
        
        System.out.println(str1.charAt(1));  //取字符串指定索引位置的一个字符
        
        System.out.println(str1.substring(1)); //从指定位置开始取字符串
        System.out.println(str1.substring(1,2)); //从指定位置开始取字符串,返回字符串长度为2-1
        
        System.out.println(str1.concat("World!")); //将指定字符串连接到此字符串的结尾。
        
        System.out.println(str1.indexOf("lo")); //返回指定字符串在此字符串中第一次出现处的索引。
        System.out.println(str1.indexOf("lo", 3)); //返回指定字符串在此字符串中从指定位置开始第一次出现处的索引。
        System.out.println(str1.lastIndexOf("lo")); //返回指定字符串在此字符串中最后一次出现处的索引。
        System.out.println(str1.indexOf('l')); //返回指定字符在此字符串中第一次出现处的索引。
        System.out.println(str1.lastIndexOf('l')); //返回指定字符在此字符串中最后一次出现处的索引。
        
        System.out.println(str1.trim()); //返回字符串的副本,忽略前导空白和尾部空白。
        
        System.out.println(str1.replace('e', 'p')); //返回一个新的字符串,用 newChar替换此字符串中出现的所有 oldChar得到的。
        System.out.println(str1.replace("e", "p"));  //...
        
        System.out.println(str1.toUpperCase()); //使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
        System.out.println(str1.toLowerCase()); //使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。
        
        System.out.println(str1.compareTo(str2));  //比较字符串首字符的Unicode编码大小
        
        String filename = "hello.exe";
        
        if(filename.endsWith(".exe")) {   //测试此字符串是否以指定的后缀结束。
            System.out.println("这是一个可执行文件!");
        }
        
        System.out.println(filename.startsWith("helo"));  //测试此字符串是否以指定的前缀开始。
        
    }
}

package com.tara;
/**
 * 
 * @author tara
 *
 */
public class StringMethod {
    public static void main(String[] args) {
        String str1 = "Hello"; //存储在静态区(static)
        String str2 = new String("Hello"); //str2为引用类型,str2存储的是引用的String对象的地址,在栈(stack)中;String对象存储在堆(heap)中
        
        System.out.println((str1 == str2));
        
        System.out.println(str1.equals(str2));  //比较两个字符串
        System.out.println(str1.equalsIgnoreCase(str2)); //比较两个字符串,忽略大小写
        
        System.out.println(str1.length()); //返回字符串的长度
        
        System.out.println(str1.charAt(1));  //取字符串指定索引位置的一个字符
        
        System.out.println(str1.substring(1)); //从指定位置开始取字符串
        System.out.println(str1.substring(1,2)); //从指定位置开始取字符串,返回字符串长度为2-1
        
        System.out.println(str1.concat("World!")); //将指定字符串连接到此字符串的结尾。
        
        System.out.println(str1.indexOf("lo")); //返回指定字符串在此字符串中第一次出现处的索引。
        System.out.println(str1.indexOf("lo", 3)); //返回指定字符串在此字符串中从指定位置开始第一次出现处的索引。
        System.out.println(str1.lastIndexOf("lo")); //返回指定字符串在此字符串中最后一次出现处的索引。
        System.out.println(str1.indexOf('l')); //返回指定字符在此字符串中第一次出现处的索引。
        System.out.println(str1.lastIndexOf('l')); //返回指定字符在此字符串中最后一次出现处的索引。
        
        System.out.println(str1.trim()); //返回字符串的副本,忽略前导空白和尾部空白。
        
        System.out.println(str1.replace('e', 'p')); //返回一个新的字符串,用 newChar替换此字符串中出现的所有 oldChar得到的。
        System.out.println(str1.replace("e", "p"));  //...
        
        System.out.println(str1.toUpperCase()); //使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
        System.out.println(str1.toLowerCase()); //使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。
        
        System.out.println(str1.compareTo(str2));  //比较字符串首字符的Unicode编码大小
        
        String filename = "hello.exe";
        
        if(filename.endsWith(".exe")) {   //测试此字符串是否以指定的后缀结束。
            System.out.println("这是一个可执行文件!");
        }
        
        System.out.println(filename.startsWith("helo"));  //测试此字符串是否以指定的前缀开始。
        
    }
}

练习6:输入用户名和密码,验证用户身份。

package com.tara;

import java.util.Scanner;

/**
 * 系统只有一个用户 id:admin  pswd:123456
 * @author tara
 *
 */
public class StringPassward {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        boolean isLogin = false;
        do{
            System.out.println("id:");
            String id = sc.nextLine().trim();
            System.out.println("pswd:");
            String pswd = sc.nextLine().trim();
            isLogin = id.equals("admin") && pswd.equals("123456");
            if(!isLogin) {
                System.out.println("用户名或密码错误!");
            }
        }while(!isLogin);
        System.out.println("欢迎!");

        sc.close();
    }
}
package com.tara;

import java.util.Scanner;

/**
 * 系统只有一个用户 id:admin  pswd:123456
 * @author tara
 *
 */
public class StringPassward {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        boolean isLogin = false;
        do{
            System.out.println("id:");
            String id = sc.nextLine().trim();
            System.out.println("pswd:");
            String pswd = sc.nextLine().trim();
            isLogin = id.equals("admin") && pswd.equals("123456");
            if(!isLogin) {
                System.out.println("用户名或密码错误!");
            }
        }while(!isLogin);
        System.out.println("欢迎!");

        sc.close();
    }
}
package com.tara;

import java.util.Scanner;
/**
 * 系统有三个用户
 * @author tara
 *
 */
public class StringPasswards {
    
    public static int compareString(String[] x, String y) {
        for(int i = 0; i < x.length; ++i) {
            if(x[i].equals(y)) {
                return i;
            }
        }
        return -1;
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] ids = {"111222", "111333", "111444"};
        String[] pswds ={"abc123", "opq", "xyz1"};
        
        boolean isLogin = false;
        do {
            System.out.print("用户名:");
            String id = sc.nextLine().trim();
            System.out.print("密码:");
            String pswd = sc.nextLine().trim();
            int index = compareString(ids, id);
            if (index != -1) {
                if(pswd.equals(pswds[index])){
                    isLogin = true;
                }
            }
            if(!isLogin){
                System.out.println("用户名或密码错误!请重新输入.");
            }
        } while (!isLogin);
        System.out.println("欢迎!");      
        
        
        
//      boolean isLogin = false;
//      do {
//          System.out.print("用户名:");
//          String id = sc.nextLine().trim();
//          System.out.print("密码:");
//          String pswd = sc.nextLine().trim();
//          int index = compareString(ids, id);
//          for (int i = 0; i < ids.length; ++i) {
//              if (id.equals(ids[i]) && pswd.equals(pswds[i])) {
//                  isLogin = true;
//              }
//          }
//          if (!isLogin) {
//              System.out.println("用户不存在或密码错误!请重新输入.");
//          }
//      } while (!isLogin);
//      System.out.println("欢迎!");
        
        sc.close();
    }
}

package com.tara;

import java.util.Scanner;
/**
 * 系统有三个用户
 * @author tara
 *
 */
public class StringPasswards {
    
    public static int compareString(String[] x, String y) {
        for(int i = 0; i < x.length; ++i) {
            if(x[i].equals(y)) {
                return i;
            }
        }
        return -1;
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] ids = {"111222", "111333", "111444"};
        String[] pswds ={"abc123", "opq", "xyz1"};
        
        boolean isLogin = false;
        do {
            System.out.print("用户名:");
            String id = sc.nextLine().trim();
            System.out.print("密码:");
            String pswd = sc.nextLine().trim();
            int index = compareString(ids, id);
            if (index != -1) {
                if(pswd.equals(pswds[index])){
                    isLogin = true;
                }
            }
            if(!isLogin){
                System.out.println("用户名或密码错误!请重新输入.");
            }
        } while (!isLogin);
        System.out.println("欢迎!");      
        
        
        
//      boolean isLogin = false;
//      do {
//          System.out.print("用户名:");
//          String id = sc.nextLine().trim();
//          System.out.print("密码:");
//          String pswd = sc.nextLine().trim();
//          int index = compareString(ids, id);
//          for (int i = 0; i < ids.length; ++i) {
//              if (id.equals(ids[i]) && pswd.equals(pswds[i])) {
//                  isLogin = true;
//              }
//          }
//          if (!isLogin) {
//              System.out.println("用户不存在或密码错误!请重新输入.");
//          }
//      } while (!isLogin);
//      System.out.println("欢迎!");
        
        sc.close();
    }
}

练习7:跑马灯效果。

package com.tara;
/**
 * 
 * @author tara
 *
 */
public class Light {
    public static void main(String[] args) throws InterruptedException {
        String str = "欢迎来到狼窝.....";

        while(true) {
            System.out.println(str);
            str = str.substring(1) + str.charAt(0);
            Thread.sleep(200);
        }

    }
}
package com.tara;
/**
 * 
 * @author tara
 *
 */
public class Light {
    public static void main(String[] args) throws InterruptedException {
        String str = "欢迎来到狼窝.....";

        while(true) {
            System.out.println(str);
            str = str.substring(1) + str.charAt(0);
            Thread.sleep(200);
        }

    }
}

练习8:实现字符串倒转、字符串去掉空格、字符串大小写互换的方法。

package com.tara;
/**
 * 
 * @author tara
 *
 */
public class StringReverse{
    /**
     * 字符串倒序输出
     * @param str 待倒序字符串
     * @return 倒序后的字符串
     */
    public static String reverse(String str){
        String newStr = "";
        for(int i = str.length()-1; i >=0; --i) {
            newStr += str.charAt(i);
        }
        return newStr;
    }

    public static void main(String[] args) {
        System.out.println(reverse("hello"));
        System.out.println(reverse("malloc"));
        System.out.println(reverse("我爱你"));
        System.out.println(reverse("i love you"));
        
        System.out.println(trimAll("  sdg sgas gasgas sdB   "));
        
        System.out.println(switchUpperLower("Hell,World!"));
    }
    /**
     * 去掉字符串中的空白字符
     * @param str 待转换字符串
     * @return 转换后的字符串
     */ 
    public static String trimAll(String str) {
        String newStr = "";
        for(int i = 0; i <str.length(); ++i) {
            if(str.charAt(i) != ' ')
            newStr += str.charAt(i);
        }
        return newStr;
    }
    /**
     * 字符串大小写转换
     * @param str 待转换字符串
     * @return 转换后的字符串
     */
    public static String switchUpperLower(String str) {
        String newStr = "";
        for(int i = 0; i <str.length(); ++i) {
            char ch = str.charAt(i);
            if(ch >= 'A' && ch <='Z') {
                ch += 32;  //#############
            }
            else if(ch >= 'a' && ch <='z') {
                ch -= 32;
            }
        }
        return newStr;
    }
    
}

package com.tara;
/**
 * 
 * @author tara
 *
 */
public class StringReverse{
    /**
     * 字符串倒序输出
     * @param str 待倒序字符串
     * @return 倒序后的字符串
     */
    public static String reverse(String str){
        String newStr = "";
        for(int i = str.length()-1; i >=0; --i) {
            newStr += str.charAt(i);
        }
        return newStr;
    }

    public static void main(String[] args) {
        System.out.println(reverse("hello"));
        System.out.println(reverse("malloc"));
        System.out.println(reverse("我爱你"));
        System.out.println(reverse("i love you"));
        
        System.out.println(trimAll("  sdg sgas gasgas sdB   "));
        
        System.out.println(switchUpperLower("Hell,World!"));
    }
    /**
     * 去掉字符串中的空白字符
     * @param str 待转换字符串
     * @return 转换后的字符串
     */ 
    public static String trimAll(String str) {
        String newStr = "";
        for(int i = 0; i <str.length(); ++i) {
            if(str.charAt(i) != ' ')
            newStr += str.charAt(i);
        }
        return newStr;
    }
    /**
     * 字符串大小写转换
     * @param str 待转换字符串
     * @return 转换后的字符串
     */
    public static String switchUpperLower(String str) {
        String newStr = "";
        for(int i = 0; i <str.length(); ++i) {
            char ch = str.charAt(i);
            if(ch >= 'A' && ch <='Z') {
                ch += 32;  //#############
            }
            else if(ch >= 'a' && ch <='z') {
                ch -= 32;
            }
        }
        return newStr;
    }
    
}