自学Java第3Day

学习目标:

  • Java 在大三上已经学过一学期的面向对象,所以打算在一星期把面向对象复习完成。

学习内容:

字符串


学习时间:

下午 4点-下午 6 点


学习产出:

String概述

        java.lang.String类代表字符串,Java程序中的所有字符串文字(例如“abc”)都为此类的对象。

String name="全聚德一级码师";
String city="乌鲁木齐";

String的注意

        字符串的内容是不会发生改变的,它的对象在创建后不能被更改。

创建String对象的两种方式

        1.直接赋值

String name="全聚德一级码师";

        当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在。

        存在:复用(节约内存)

        不存在:创建新的

        2.new

构造方法说明
public String()创建空白字符串,不含任何内容
public String(String original)根据传入的字符串,创建字符串对象
public String(char[ ] chs)根据字符数组,创建字符串对象
public String(byter[ ] chs)根据字节数组,创建字符串对象

public class demo {
    public static void main(String[] args) {
        //空参构造
        String s1=new String();
        System.out.println("?"+s1+"?");

        //传递一个字符串,根据传递的字符串内容再创建一个新的字符串对象(脱裤子放屁)
        String s2=new String("abc");
        System.out.println(s2);

        //传递一个字符数组,根据字符数组的内容再创建一个新的字符串对象
        //需求:我要修改字符串内容。 abc-->Qbc
        //abc --> {'a','b','c'} --> {'Q','b',''c} --> Qbc
        char[] chs={'a','b','c','d'};
        String s3=new String(chs);
        System.out.println(s3);//abcd

        //传递一个字节数组,根据字节数组的内容再创建一个新的字符串对象
        //应用场景:以后在网络当中传输的数据都是字节信息
        //我们一般要把字节信息进行转换,转成字符串,此时就要用到这个构造了
        byte[] bytes={76,79,86,69};
        String s4=new String(bytes);
        System.out.println(s4);

    }
}

 运行结果 

??
abc
abcd
LOVE

Java的常用方法(比较)

int a=10;
int b=20;
System.out.println(a==b);//false

        基本数据类型比较的是数据值。

String s1=new String("abc");
String s2=new String("abc");
System.out.println(s1==s2);//false

        引用数据类型比较的是地址值。

1.字符串比较

        boolean equals方法(要比较的字符串)   完全一样才是true,否则为false

        boolean equalsignoreCase(要比较的字符串)    忽略大小写

public class demo2 {
    public static void main(String[] args) {
        //1.创建两个字符串对象
        String s1=new String("abc");
        String s2="abc";
        System.out.println(s1==s2);


        boolean result1=s1.equals(s2);
        System.out.println(result1);

        String s3="Abc";
        boolean result2=s1.equalsIgnoreCase(s3);
        System.out.println(result2);
    }
}

 运行结果:

false
true
true
import java.util.Scanner;
public class demo3 {
    public static void main(String[] args) {
        //假设我现在键盘输入abc
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        //代码中定义一个字符串abc
        String s1="abc";
        String s2=scan.next();//abc
        //用==比较,能一样吗?
        System.out.println(s1==s2);
    }
}

 运行结果:

请输入一个字符串:
abc
false

        结论:以后只要想比较字符串的内容,就要用String里面的方法。

练习:已知正确的用户名和密码,请用程序实现模拟用户登录。

           总共给三次机会,登录之后,给出相应的提示。

import java.util.Scanner;

public class demo4 {
    public static void main(String[] args) {
        //1.定义两个变量
        String username="蛋姐";
        String password="123456";

        int a=3;
        for (int i = 0; i <3; i++) {
            //键盘录入
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入用户名:");
            String uname=scan.next();
            System.out.println("请输入密码:");
            String upassword=scan.next();
            //比较
            if(username.equals(uname)&&(password.equals(upassword))){
                System.out.println("登录成功!!!");
                break;
            }
            --a;
            System.out.println("密码或用户名错误,还有"+a+"次机会!!!");

        }
    }
}

遍历字符串

        键盘录入一个 字符串,使用程序实现在控制台遍历该字符串。

        public char charAt(int index): 根据索引返回字符

        public int length(): 返回此字符串的长度

        数组的长度:数组名。length

        字符串的长度:字符串对象。length()

import java.util.Scanner;
public class demo5 {
    public static void main(String[] args) {
        //键盘录入一个字符串
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s1=scan.next();
        //经行遍历
        for (int i = 0; i < s1.length(); i++) {
            //i依次表示字符串的每一个索引
            char c=s1.charAt(i);
            System.out.println(c);
        }
    }
}

运行结果:

请输入一个字符串:
全聚德一级码师
全
聚
德
一
级
码
师

练习:

键盘录入一个字符串,统计字符串中大写与小写字母的个数。

import java.util.Scanner;

public class demo6 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入:");
        String s1=sc.next();
        int bigCount=0;
        int smallCount=0;
        int numberCount=0;
        for (int i = 0; i < s1.length(); i++) {
            char c =s1.charAt(i);
            if(c>=97&&c<=122){  //acsII码
                smallCount++;
            }else if(c>=65&&c<=90){
                bigCount++;
            } else if (c>=48&&c<57) {
                numberCount++;
            }
        }
        System.out.println("小写字母的个数:"+smallCount  +"大写字母的个数:"+bigCount   +"数字的个数"+numberCount);
    }
}

运行结果 

请输入:
HelloWorld123
小写字母的个数:8大写字母的个数:2数字的个数3

ASCII码表

拼接字符串

练习:

        定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法。 

public class demo7 {
    public static void main(String[] args) {
        int[] arr={1,2,3};
        System.out.println(arrToString(arr));
    }
    public static String arrToString(int[] arr){
        if(arr==null){
            return "";
        }
        if (arr.length==0){
            return "[]";
        }
        String result="[";
        for (int i = 0; i < arr.length; i++) {
            if(i== arr.length-1){
                result+=arr[i]+"]";
            }else {
                result+=arr[i]+",";
            }
        }
        return result;
    }
}

运行结果 

[1,2,3]

练习:定义一个方法,实现字符串反转。

           键盘录入一个字符串,调用该方法后,在控制台输出结果。

           例如:键盘录入abc,输出cba

public class demo8 {
    private static int i;

    public static void main(String[] args) {
        String str=new String("abc");
        System.out.println(reverser(str));
    }
    public static String reverser(String str){
        String result="";
        //i依次表示字符串的每一个索引(倒着的)
        for (int i = str.length()-1; i >= 0; i--) {
            char c=str.charAt(i);
            result+=c;
        }
        return result;
    }
}

运行结果 

cba

练习:金额转化

2135                              >>>>>>>                    零佰零拾零万贰仟壹佰叁拾伍元
import java.util.Scanner;
public class demo9 {
    public static void main(String[] args) {
        //键盘录入金额
        Scanner scan=new Scanner(System.in);
        int money;
        while (true) {
            System.out.println("请输入一个金额:");
            money= scan.nextInt();
            if(money>=0&&money<=9999999){
                break;
            }else {
                System.out.println("金额无效!!!");
            }
        }
        //表示大写
        String moneyStr="";
        //得到数字
        while (true){
            //从右往左获取数据
            int ge=money%10;
            String getCapitalNumber=getCapitalNumber(ge);
            moneyStr=getCapitalNumber+moneyStr;

            //去掉刚刚获取的数据
            money=money/10;
             if(money==0){
                 break;
             }
        }
        //在前面补零
        int count=7-moneyStr.length();
        for (int i = 0; i < count; i++) {
            moneyStr="零"+moneyStr;
        }
        //表示最终的结果
        String moneyover="";
        //定义一个数组表示单位
        String[] arr={"佰","拾","万","仟","佰","拾","元"};
        for (int i = arr.length-1; i >=0; i--) {
            //拼接大写数字和单位
            moneyover=moneyStr.charAt(i)+arr[i]+moneyover;
        }
        System.out.println(moneyover);
    }
    public static String getCapitalNumber(int number){
            String[]s1={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
            return s1[number];
    }
}

运行结果

请输入一个金额:
123
零佰零拾零万零仟壹佰贰拾叁元

  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值