• 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;
    
  • 相关阅读:
    嵌入优酷视频
    简单字符串处理
    随机生成一个大写字母
    生成二维码
    【计算机网络(谢希仁)-读书笔记】5.2 用户数据报协议UDP
    【计算机网络(谢希仁)-读书笔记】5.1 运输层协议概述
    【计算机网络(谢希仁)-读书笔记】4.6 IP多播
    【计算机网络(谢希仁)-读书笔记】4.5 因特网的路由选择协议
    【计算机网络(谢希仁)-读书笔记】4.4 网际控制报文协议ICMP
    【计算机网络(谢希仁)-读书笔记】4.3 划分子网和构造超网
  • 原文地址:https://www.cnblogs.com/Tanqurey/p/10485323.html
Copyright © 2020-2023  润新知