黑马JAVA入门学习笔记7

一、先学习包

1.包是分门别类管理程序的

2.如果要访问其他包下的程序,必须导包才行

当你写类名的时候会显示这个包,按回车自动导进去,也可以通过修改设置:文件-设置-editor-general-auto import-勾选add unambiguous imports on the fly即可。

3.自己的程序调用Java提供的程序,也需要先导包才可以使用,java.long包下的程序不需要导包,可以直接使用。

4.访问多个其他包下的程序,这些程序名又一样的情况下,默认只能导入一个程序,另一个程序必须带包名和类名来访问。

二、String

1.String创建对象封装字符串数据的方式

2.string提供的操作字符串数据的常用方法

public class StringDemo {
    public static void main(String[] args) {
        String s="学习JAVA";
        //1.获取字符串长度
        System.out.println(s.length());//6
        //2.提取字符串中某个索引位置处的字符
        char c=s.charAt(1);
        System.out.println(c);//习
        //字符串遍历
        for (int i = 0; i < s.length(); i++) {
            char ch=s.charAt(i);
            System.out.println(ch);// 学习java
        }
        //3.把字符串转换成字符数组,再进行遍历
        char[] chars=s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);//学习java
        }
        //4.判断字符串内容,内容一样就返回true
        String s1="学习";
        String s2="学习";
        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));//true
        //5.忽略大小写比较字符串的内容
        String c1="34AeFG";
        String c2="34aefg";
        System.out.println(c1.equals(c2));//false
        System.out.println(c1.equalsIgnoreCase(c2));//true
        //6.截取字符串内容(包前不包后)
        String s3="java是最好的编程语言之一";
        String rs=s3.substring(0,8);
        System.out.println(rs);//java是最好的
        //7.从当前索引位置一直截取到字符串的末尾
        String rs2=s3.substring(5);
        System.out.println(rs2);//最好的编程语言之一
        //8.把字符串中的某个内容替换成新的内容,并返回新的字符串对象给我们
        String info="这个电影简直是个垃圾,垃圾电影!!!";
        String rs3=info.replace("垃圾","**");
        System.out.println(rs3);//这个电影简直是个**,**电影!!
        //9.判断字符串有没有包含某个关键字
        String info2="JAVA是最好的编程语言,我爱JAVA,JAVA不爱我!";
        System.out.println(info2.contains("JAVA"));//true
        System.out.println(info2.contains("JAVA2"));//false
        System.out.println(info2.contains("java"));//false
        //10.判断字符串是否以某个字符串开头
        String rs4="张三丰";
        System.out.println(rs4.startsWith("张"));//true
        System.out.println(rs4.startsWith("张三"));//true
        System.out.println(rs4.startsWith("张三2"));//false
        //11.把字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回
        String rs5="张无忌,周芷若,殷素素,赵敏";
        String[] names=rs5.split(",");
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);//张无忌 周芷若 殷素素 赵敏
        }
    }
}

3.String使用时的注意事项

  • string的对象是不可变字符串对象  

  •  只要以“。。”写出的字符串对象,会存储在字符串常量池,且相同内容的字符串只存储一份
  • 但通过new方式创建字符串,每new一次就会产生一个新的对象放在堆内存中。
        String s8="abc";
        String s9="abc";
        System.out.println(s8==s9);//true
        char[] chars1={'a','b','c'};
        String a1=new String(chars1);
        String a2=new String(chars1);
        System.out.println(a1==a2);//false

 小案例:new String(“abc”)放在了新开辟的一个内存里,s1=“abc”指向常量池

 test3中,s3相当于新开辟了一个内存空间,在堆内存中。

4.String的应用案例

 完成用户登录:

import java.util.Scanner;

public class Test_login {
    public static void main(String[] args) {
        //1.开发一个登录界面
        for (int i=0;i<3;i++) {
            Scanner sc=new Scanner(System.in);
            System.out.println("请您输入登录账号:");
            String loginName=sc.next();
            System.out.println("请您输入密码:");
            String pastWord=sc.next();
            //5.开始调用登录方法,判断是否登录成功
            boolean rs=login(loginName,pastWord);
            if(rs){
                System.out.println("恭喜您,登陆成功!!");
                break;
            }else{
                System.out.println("抱歉,登录失败~~");
            }
        }
    }
    /**
     * 2.开发一个登录方法,来接收用户的账号密码,返回认证结果
     */
    public static boolean login(String loginName,String pastWord){
        //3.准备一份系统正确的账号和密码
        String okLoginName="StudyJAVA";
        String okPastWord="123456";
        //4.进行判断用户是否登录成功
       /* if(okLoginName.equals(loginName)&&okPastWord.equals(pastWord)){
            return true;
        }else{
            return false;
        }*/
        return okLoginName.equals(loginName)&&okPastWord.equals(pastWord);
        //不能直接用==,因为==比较的是地址,容易出现bug,基本数据类型的变量或者值应该用==比较
        //比较字符串:使用equals。忽略大小写,使用equalsIgnoreCase

    }
}

使用String来开发验证码

import java.util.Random;

public class Test_code {
    public static void main(String[] args) {
        System.out.println(getCode(5));
        System.out.println(getCode(6));

    }
    /**
     * 1.设计一个方法,产生指定位数的验证码
     */
    public static String getCode(int n){
        //2.先定义两个变量,一个用来接生成的验证码,一个用来存储所有可能得字符
        String code="";
        String data="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        //3.定义循环产生每位随机字符
        Random r=new Random();
        for (int i = 0; i <n ; i++) {
            //4.随机一个字符范围内的索引
            int index=r.nextInt(data.length());
            //5.根据索引去提取对应位置的字符,连接进code中。
            code+=data.charAt(index);

        }
        return code;
    }
}

 

三、ArrayList 

1.认识ArrayList

  • 什么是集合:一种容器,用来装数据,类似于数组
  • 数组定义完之后,长度固定,而集合大小可变。
  • 学习过程:ArrayList集合怎么创建,增删改查的操作,其他特点。
import java.util.ArrayList;

/**
 * 目标:掌握创建ArrayList集合对象,熟悉ArrayList的常用方法
 */
public class ArrayList_Demo1 {
    public static void main(String[] args) {
        //1.创建ArrayList集合对象
        ArrayList list =new ArrayList();//不限定类型
        list.add("学习");
        list.add("java");
        list.add(666);
        list.add(0.8);
        System.out.println(list);
        ArrayList<String> list1 =new ArrayList<>();//限定字符串类型,后面<>里面可以省略,jdk1.7开始支持
        //2.往集合中某个索引位置添加数据
        list.add(1,"SQL");
        System.out.println(list);
        //3.根据索引获得集合中该位置的值
        System.out.println(list.get(1));
        //4.获取集合大小,返回集合中存储元素个数
        System.out.println(list.size());
        //5.根据索引删除元素,并返回删除的元素给我们
        System.out.println(list.remove(1));
        System.out.println(list);
        //6.直接删除某元素值,删除成功返回true,反之。。如果有两个相同的数据,默认删除第一次出现的数据
        System.out.println(list.remove("java"));
        System.out.println(list);
        //7.修改某个索引位置的数据,返回旧数据给我们
        System.out.println(list.set(1,"程序员"));
        System.out.println(list);
    }
}

 

2.ArrayList的应用案例 

 从容器中找出某些数据并成功删除

import java.util.ArrayList;

/**
 从容器中找出某些数据并成功删除
 */
public class ArrayList_Demo2 {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("枸杞");
        list.add("学习java");
        list.add("黑枸杞");
        list.add("拖鞋");
        list.add("宁夏枸杞");
        list.add("特级枸杞");
        list.add("枸杞子");
        System.out.println(list);
        //从集合中找到枸杞并删除
        for (int i = 0; i < list.size(); i++) {
            String ele=list.get(i);
            if(ele.contains("枸杞")){
                list.remove(ele);
                i--;
            }

        }
        System.out.println(list);
    }

}

方法二:倒着遍历,这样不会出现bug 


import java.util.ArrayList;

/**
 从容器中找出某些数据并成功删除
 */
public class ArrayList_Demo2 {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("枸杞");
        list.add("学习java");
        list.add("黑枸杞");
        list.add("拖鞋");
        list.add("宁夏枸杞");
        list.add("特级枸杞");
        list.add("枸杞子");
        System.out.println(list);
        //从集合中找到枸杞并删除
      /*  for (int i = 0; i < list.size(); i++) {
            String ele=list.get(i);
            if(ele.contains("枸杞")){
                list.remove(ele);
                i--;
            }

        }*/
        for (int i = list.size()-1; i >=0 ; i--) {
            String ele=list.get(i);
            if(ele.contains("枸杞")){
                list.remove(ele);

            }
        }
        System.out.println(list);
    }

}

 3.ArrayList的综合案例

模仿外卖系统的商家系统:

需求:完成菜品上架,菜品信息的浏览

public class ArrayList_test {
    public static void main(String[] args) {
        //完成商家菜品上架操作
        //1.设计一个菜品类Food,负责创建菜品对象,封装菜品数据
        //2.设计一个菜品操作类FoodOperator,实现菜品业务:上架,浏览信息
        FoodOperator operator=new FoodOperator();
        operator.start();


    }
}
public class Food {
    private String name;
    private double price;
    private String desc;

    public Food() {
    }

    public Food(String name, double price, String desc) {
        this.name = name;
        this.price = price;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}

import java.util.ArrayList;
import java.util.Scanner;

/**
 * 菜品操作类,实现菜品业务:上架,浏览信息
 */
public class FoodOperator {
    //1.定义一个ArrayList集合,存储菜品信息。
    private ArrayList<Food> foodlist=new ArrayList<>();
    //2.开发上架菜品功能
    public void addFood(){
        //3.创建菜品对象,封装菜品信息
        Food f=new Food();
        //4.录入菜品信息
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入菜品名字");
        String name=sc.next();
        f.setName(name);
        System.out.println("请输入菜品价格");
        double price=sc.nextDouble();
        f.setPrice(price);
        System.out.println("请输入菜品介绍");
        String desc=sc.next();
        f.setDesc(desc);
        //5.把菜品对象存入到集合中
        foodlist.add(f);
        System.out.println("上架成功");
    }
    //6.展示菜品
    public void showFood(){
        if(foodlist.size()==0){
            System.out.println("没有菜品,先去上架");
            return;
        }
        for (int i = 0; i <foodlist.size() ; i++) {
            Food f=foodlist.get(i);//f一次为每个菜品对象的地址
            System.out.println(f.getName());
            System.out.println(f.getPrice());
            System.out.println(f.getDesc());
            System.out.println("-------------");

        }
    }
    //7.负责展示菜品操作界面
    public void start(){
        while (true) {
            System.out.println("请选择功能");
            System.out.println("1.上架菜品");
            System.out.println("2.浏览菜品");
            System.out.println("3.退出");
            Scanner sc=new Scanner(System.in);
            String command=sc.next();
            switch (command){
                case "1":
                    addFood();
                    break;
                case "2":
                    showFood();
                    break;
                case "3":
                    System.out.println("下次再来");
                    return;//结束start方法
                default:
                    System.out.println("您输入命令不存在");
                    break;
            }
        }
    }

四、总结

 

 

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值