Java基础(三)

1、数组的创建方法

//第一种
int[] arr = new int[5];
//第二种
int[] arr = new int[]{1,2,3,4,5};
//第三种
int[] arr = {1,2,3,4,5};

2、String类的一些方法使用
获取String的长度是用,String.lenght();方法。
inedxOf(参数一,参数二) 是查找指定字符串的位置,参数一为要找的字符,而参数二为从从字符串的哪个位置开始查找。
lastIndexOf(); 和上面的类似,只是查询的是最后的位置,而不是第一次的位置。
charAt(参数一);该方法则是返回的是对应索引位置的字符,参数一为int类型。
equalsIgonreCase();该方法是忽略大小写进行比骄。
compareTo(); 该方法是用来比较前后的。
split(参数一);该方法表示根据指定的字符(也就是参数一)进行切割成为数组,它返回的是一个
数组。

String的注意事项:
1、String为不可变类,如果要反复累加字符串不推荐使用,可以考虑StringBuffer或者StringBuilder。
2、String类为final修饰的,不可以被继承。
3、如果在多线程情况下考虑使用StringBuffer,因为synchronize关键字保证了安全性。如果是其他情况下,更推荐使用StringBuilder,性能更高。
3、final关键字
3.1、final修饰属性,代表属性的值不可变。如果是强类型(引用类型)那么地址值是不改变的,但里面的内容可以改变。
3.2、修饰类时,代表该类为最终类,不可以再派生子类,也不可以被继承。
4、static属性加与不加的区别?
4.1、static为静态的,属于类的,可以由类名直接调用,当然对象也可以调用,是共享的。
4.2、如果不加static,那么称为实例变量,依赖于每个对象,多个对象互不干涉,是独立的。
5、局部变量和成员变量
局部变量:在方法、构造方法、语句块中定义的变量,都叫局部变量。没有初始值,必须要赋值使用。
成员变量:是定义在类中,方法体之外的变量。可以被类中的方法,构造方法使用。并且它是有初始值的,数值的初始值都为0.String等引用类型为null,boolean为false。

代码案例例题
字符排序(升序和降序)

public calss Text{
	public static void main(String[] args){
		char[] arr = new char[]{'a','c','g','t','b'};
		System.out.print("原字符序列:");
		for(int i = 0; i < arr.length; i++){
			System.out.println(arr[i]+"\t");
		}
		Arrays.sort(arr);//将数组进行了排序。
		System.out.println("\n升序字符序列:");
		for(int i = 0; i < arr.length; i++){
			System.out.println(arr[i]+"\t");
		}
		System.out.println("\n降序字符序列:");
		for(int i = arr.length-1; i >= 0; i++){
			System.out.println(arr[i]+"\t");	
		}
	}
}

鸡兔同笼问题

public class Text {
    public static void main(String[] args) {
        int tu = 0;
        for (int ji = 0; ji <= 35; ji++){
            tu = 35 - ji;
            if ((ji*2 + tu*4) == 94){
                System.out.println("鸡有"+ji+"只");
                System.out.println("兔子有"+tu+"只");
            }
        }
        for (int ji = 0; ji <= 35; ji++){
            tu = 35 - ji;
            if ((ji*2 + tu*4) == 94){
                System.out.println("鸡有"+ji+"只");
                System.out.println("兔子有"+tu+"只");
            }
        }
    }
}

穷举法案例,求出男人,女人,小孩的所有人数可能性

public class Text {
    public static void main(String[] args) {
        int man;
        int woman;
        int child;
        int i = 0;
        for (man = 0; man < 30;man++){
            for (woman = 0;woman < 30;woman++){
                for (child = 0;child < 30;child++){
                    if (woman+man+child == 30 && man*3+woman*2+child*1 == 50){

                        System.out.println(i+":男人"+man+"女人"+woman+"小孩"+child);
                        i++;
                    }
                }
            }
        }
    }
}

数组容量的扩增,以及任意字符串插入数组的任意位置的输出

public class Text {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String[] musics = new String[]{"Island","Ocean","Pretty","Sun",null};
        while (true){
            System.out.print("\n插入前的数组为:");
            printer(musics);
            System.out.print("\n请输入新的歌曲名字(输入0退出):");
            String music = input.next();
            if ("0".equals(music)) break;

            int i =0;
            for (;i < musics.length;i++) {
                if (null == musics[i] || music.compareToIgnoreCase(musics[i]) < 0){//比较输入的字符串,和原有的字符串进行大小比较。
                    break;
                }
            }
            for (int j = musics.length - 1; j > i; j--) {
                musics[j] = musics[j - 1];
            }
            musics[i] = music;
            System.out.print("插入后的数组为:");
            printer(musics);

            String[] newArrary = new String[musics.length+1];//定义一个新的数组在之前的数组长度上加一
            System.arraycopy(musics,0,newArrary,0,musics.length);//把上面的数组赋值给新的数组,
            musics = newArrary;//再把新的数组的引用地址传给老的地址,完成一轮数组长度的增加
        }

    }

    private static void printer(String[] musics) {
        for (int i = 0; i < musics.length; i++){
            if (musics[i] != null){
                System.out.print(musics[i]+"\t");
            }

        }
    }
}

一般的正则表达式案例

public class Text {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入您的电子邮箱:");
        String emails = input.next();
        if (emails.matches("^[0-9a-z]+\\w*@([0-9a-z]+\\.)+[0-9a-z]+$")){
            System.out.println("邮箱格式正确!");
        }else {
            System.out.println("您的邮箱输入格式不正确!请重新输入!");
        }

        System.out.print("请输入您的手机号:");
        String phone = input.next();
        if (phone.matches("^1[3|4|5|7|8][0-9]{9}$")){
            System.out.println("您的手机号输入正确!");
        }else {
            System.out.println("您的手机号输入格式不对!");
        }
        System.out.print("请输入您的身份证:");
        String idCode = input.next();
        if (idCode.matches("^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([\\d|x|X]{1})$")){
            System.out.println("您的身份证输入正确!");
        }else {
            System.out.println("您的身份证输入格式不正确!");
        }
    }
}

查询字符串的位置在何处?

public class Text {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一串字符:");
        String ju = input.next();
        System.out.println("请输入要查询的字符:");
        String zi = input.next();
        System.out.print(zi+"出现的位置是:");
        for (int i = 0; i < ju.length(); i++){
            if (ju.charAt(i) == zi.charAt(0)){
                System.out.print(i+"\t");
            }
        }
        int index = 0;
        while (true){
            index = ju.indexOf(zi,index);
            if (index == -1){
                break;
            }
            System.out.print(index+"\t");
            index++;
        }
    }
}

一个小案例,增加人名并可以进行查询修改

public class Kehu {
    String[] kuName = new String[20];
    public void add(String name){
        for (int i = 0; i <kuName.length; i++) {
            if (kuName[i] == null){
                kuName[i] = name;
                System.out.println("添加成功!");
                return;
            }
        }
        System.out.println("人员已满,录入失败!");
    }
    public void show(){
        for (int i = 0; i < kuName.length; i++) {
            if (kuName[i] == null) break;
            else System.out.print(kuName[i] + "\t");
        }
    }
    public int isKuHu(String name,int startIndex,int endIndex){
        for (int i = startIndex-1; i <endIndex; i++) {
            if (kuName[i].equals(name)) return i;
        }
        return -1;
    }

    public int iskuHu(String name){
         return isKuHu(name,1,kuName.length);
    }
    public boolean update(String oldName,String newName){
        int res = iskuHu(oldName);
        if (res == -1){
            return false;
        }
        kuName[res] = newName;
        return true;
    }

}
public class Textkuhu {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Kehu kehu = new Kehu();
        while (true){
            System.out.print("请输入客户姓名:");
            String name = input.next();
            kehu.add(name);
            System.out.print("继续输入吗?(y/n):");
            String yn = input.next();
            if ("y".equals(yn)) continue;
            else break;
        }
        System.out.println("**********************");
        System.out.println("\t客户姓名雷列表:");
        System.out.println("**********************");
        kehu.show();
        System.out.print("\n请输入要查找的客户的姓名:");
        if (kehu.iskuHu(input.next()) >= 0){
            System.out.println("finding~~~~~~");
        }else {
            System.out.println("no exit!");
        }
        System.out.print("请输入要修改的名字:");
        String oldName = input.next();
        System.out.print("请输入新的客户姓名:");
        String newName = input.next();
        if (kehu.update(oldName,newName)){
            System.out.println("找到了该客户,并修改成功了!");
        }else {
            System.out.println("没有找到该客户,无法修改!");
        }
        kehu.show();
        System.out.print("请输入查找的开始位置:");
        int startIndex = input.nextInt();
        System.out.print("请输入查找的结束位置:");
        int endIndex = input.nextInt();
        System.out.print("请输入查找的客户姓名:");
        String name = input.next();
        if (kehu.isKuHu(name,startIndex,endIndex) >= 0){
            System.out.println("finging~~~~~~~~~");
        }else {
            System.out.println("not exit!");
        }
    }
}

利用传参数组类来进行学生的信息增加查询功能

public class Students {
    String name;
}

class StudentsBiz{
   Students[] stus = new Students[5];
   public Students[] add(Students students){
       for (int i = 0; i < stus.length; i++) {
           if (stus[i] == null){
               stus[i] = students;
               break;
           }
       }
       return stus;
   }
   public  int search(Students[] stus,Students students){
       for (int i = 0; i < stus.length; i++) {
           if (stus[i].name.equals(students.name)){
               return i;
           }
       }
       return -1;
   }

}
public class TextStudents {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请依次录入5位学生的姓名:");

        StudentsBiz studentsBiz = new StudentsBiz();
        Students[] a = new Students[5];
        for (int i = 0; i < 5; i++) {
            Students students = new Students();
            students.name = input.next();
//            studentsBiz.add(students);
            a = studentsBiz.add(students);
        }
        System.out.println("请输入要查找的学生姓名:");
        Students students = new Students();
        students.name = input.next();

        if ((studentsBiz.search(a,students)) >= 0){
            System.out.println("*****找到了*****");
        }else {
            System.out.println("*****抱歉!没找到!*****");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值