zoukankan      html  css  js  c++  java
  • JAVA自学笔记12

    JAVA自学笔记12

    1、Scanner
    1)JDK5后用于获取用户的键盘输入
    2)构造方法:public Scanner(InputStream source)
    3)System.in 标准的输入流,对应着键盘录入
    4)成员方法
    ①public boolean hasNextXxx()
    判断是否还有下一个输入项,返回布尔类型。其中Xxx可以是Int/Double等数据类型,如果需要判断是否包含下一个字符串,则可省略Xxx

    public class ScannerDemo(){
    public static void main(String args[]){
    Scanner sc=new Scanner(System.in);
    if(sc.hasNextInt()){//键盘输入为Int时才接收
    int x=sc.nextInt();
    }}
    }

    ②public Xxx nextXxx()
    获取下一个输入项。
    Xxx的含义与①中相同,默认情况下,Scanner使用空格,回车等作为分隔符
    5)注意事项:
    ①常用public int NextInt()//获取一个int类型的值
    public String nextLine();//获取一个String类型的值
    ②先获取一个数值,再获取一个字符串,会出现问题
    按了回车键,把换行符(回车键)赋给了s
    解决方法:
    A:先获取一个数值后,再创建一个新的键盘录入对象获取字符串
    B:把所有的数据都按字符串获取,需要什么类型再自行转换

    2、String类
    1)字符串是由多个字符组成的一串数据(字符数组) ,它是常量
    2)构造方法:
    ①public String()
    无参构造
    ②public String(byte[] bytes)
    把byte数组转换为字符串
    ③public String(byte[] bytes,int offset,int length)
    byte数组,作用是把某个字节数组从offset开始的以length为长度转成字符串
    ④public String(char[] value)
    把字符数组转换为字符串
    ⑤public String(char[] value,int offset,int count)
    类比③
    ⑥public String(String original)
    把字符串常量值转为字符串
    3)字符串的长度获取方法:public int length()
    4)一旦被赋值就无法被改变(值而不是引用)
    作图:
    这里写图片描述

    5)String字面值对象和构造方法创建对象的区别

    “==”比较引用类型的地址值是否一致
    “equals”默认比较引用类型的地址值,但重写后比较的是内容是否相同
    这里写图片描述

    String s1=new String("abcd");
    String s2="abcd";
    //前者创建2个对象,或者创建一个对象

    字符串如果是变量名相加则先开辟空间再拼接
    如果是常量值直接相加则先加,然后在常量池找,如果有就直接返回,否则再创建

    public class StringDemo{
    public static void main(String args[]){
    public String();//空构造
    String si=new String();
    System.out.println("s1:"+s1);//调用toString方法,此处已被重写,由于字符
    //串为空,不会输出任何东西
    
    byte[] bys = {97,98,99,100,101};
    String s2=new String(bys);
    System.out.println("s2:"+s2);//abcde
    
    String s3=new String(bys,1,4);
    System.out.println("s3:"+s3);//bcde
    
    char[] chs={'a','b','c','d'};
    String s4=new String(chs);
    System.out.println("s4:"+s4);//abcd
    
    String s4=new String(chs,0,2);
    System.out.println("s5:"+s5);//ab
    
    String s6=new String("abcde");
    System.out.println("s6:"+s6);//abcde
    }
    }

    @例题1:看程序写结果

    public class StringDemo{
    public Static void main(String args[]){
    String s1="abcd";
    String s2="abc";
    String s3="abcdabc";
    System.out.println(s3==s1+s2);//false,属两个不同的地址值
    System.out.println(s3.equals(s1+s2));//比较的是字符串的值true
    System.out.println(s3=="abcd"+"abc");//即abcdabc为s3,s3与自己相等,
    //true
    System.out.println(s3.equals("abcd"+"abc"));//true
    }
    }

    5)判断功能
    boolean equals(Object obj)//比较字符串的内容是否相同
    boolean equalsIgnoreCase(String str)//比较字符串的内容是否相同,忽略大小写
    boolean contains(String str)//判断大字符串中是否包含小字符串
    boolean startsWith(String str)//判断字符串是否某一字符串为开头
    boolean endsWith(String str)//判断字符串是否某一字符串为结尾
    boolean isEmpty()//判断字符串是否为空

    String s1="abcd";
    String s2="abcd";
    String s3="Abcd";
    String s4="";
    
    System.out.println(s1.equalsIgnoreCase(s2));//true
    System.out.println(s1.equalsIgnoreCase(s3));//true
    
    System.out.println(s1.contains(ab));//true
    System.out.println(s1.contains(ad));//false
    
    System.out.println(s1.startsWith(ab));//true
    System.out.println(s1.endsWith(ab));//false
    
    System.out.println(boolean isEmpty(s1))//false
    System.out.println(boolean isEmpty(s4))//true

    @例题2:模拟用户登录

     public class StringTest{
    public static void main(String args[]){
    //定义用户名和密码
    String username='admin';
    String password='admin';
    
    //键盘录入用户名和密码
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入用户名");
    String name=sc.nextLine();
    System.out.println("请输入密码");
    String pwd=sc.nextInt();
    
    //比较用户名和密码
    for(int i=3;i>0;){
    if(name.equals(username)&&pwd.equals(password)){
    System.out.println("登陆成功");
    break;
    }
    else{i--;
    System.out.println("登陆失败"+"你还有"+i+"次机会");}
    }
    System.out.println("次数用完");
    }
    }

    6)获取功能
    public int length();//获取字符串的长度,以下均默认public
    charAt(int index);//获取指定索引位置的字符
    int indexOf(int ch,int fromIndex);//返回字符串在指定索引之后第一次出现某字符的索引,找不到或不存在时返回-1,ch可以是字符类型,下同
    int indexOf(int ch);//返回指定字符在此字符串中第一次出现处的索引
    int indexOf(String str);//返回指定字符串在此字符串中第一次出现的索引
    int indexOf(int start);//从指定位置开始截取字符串,直到结尾,包括start处的字符,下同
    int indexOf(int start,int end);//从指定位置开始截取字符串,直到另一指定索引中结束

    7)转换功能
    byte[] getBytes();把字符串转换为字节数组
    char[] toCharArray();把字符串转换为字符数组
    static String valueOf(char[] chs);把字符数组转换为字符串,注意通过类名调用,下同
    static String valueOf(int i);把int类型的数据转换为字符串
    valueOf方法可以把任意类型转为字符串
    String toLowerCase();把字符串转为小写,形成一个新字符串,原字符串不变,下同
    String toUpperCase();把字符串转为大写
    String concat(String str);把字符串拼接

    @例题3:完成以下各题
    1)把数组中的数据按照指定个格式拼接成一个字符串
    举例:int[] arr = {1,2,3}; 输出结果:[1, 2, 3]

    int[] arr = {1,2,3};
    String s="";
    s+="[";
    for(int i=0;i<arr.length;i++){
    if(x==arr.length-1){
    s+=arr[x];
    s+="]";
    }
    if(x<arr.length-1){
    s+=arr[x];
    s+=" ";
    }
    }
    System.out.println(s);

    2)字符串反转
    举例:键盘录入”abc” 输出结果:”cba”

    答:键盘录入一个字符串-定义一个新字符串-倒着遍历每一个字符-在新字符串中把每一个字符拼接起来-输出新串

     Scanner sc=new Scanner(System.in);
     System.out.print("请输入一个字符串");
     String line=sc.nextLine();
    //定义新串
    String result="";
    //把字符串转换成字符数组
    char[] chs=line.toCharArray();
    //倒着遍历字符数组,得到每一个字符
    for(int x=chs.length-1;x>=0;x--){
    result+=chs[x];
    }
    System.out.println("result="+result)

    3)统计大串中小串出现的次数
    举例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次
    答:
    思路:A:定义一个统计变量,初始化为0
    B:先获取一次在字符串中第一次出现的索引,若返回-1,则直接返回统计变量0
    若不是-1 ,说明存在,统计变量++
    C:把刚才的索引加上小串的长度作为起始位置截取原始大串,得到新的字符串。并把该字符串重新赋值给大字符串。
    D:重复B

    String maxString="woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
    String  minString="java";
    
    int count=0;
    int index=maxString.indexOf(minString);//取首次出现的位置
    while(index!=-1){
    count++;
    int startIndex=index+minString.length();
    maxString=maxString.substring(StartIndex);
    index=maxString.indexOf(minString);
    }
    return count;
    
  • 相关阅读:
    ZOJ 1002 Fire Net
    Uva 12889 One-Two-Three
    URAL 1881 Long problem statement
    URAL 1880 Psych Up's Eigenvalues
    URAL 1877 Bicycle Codes
    URAL 1876 Centipede's Morning
    URAL 1873. GOV Chronicles
    Uva 839 Not so Mobile
    Uva 679 Dropping Balls
    An ac a day,keep wa away
  • 原文地址:https://www.cnblogs.com/Tanqurey/p/10485323.html
Copyright © 2011-2022 走看看