java入门-API学习

package API;//告诉编译器,编译之后应该放到哪个包里

import API.try3.test3;
import API.try3.test5;
import itcast.test2;

import java.util.Random;
import java.util.Scanner;

//导包
public class Introduce {
    public static void main(String[] args) {//别忘记写
        //知识点:包,String类,ArrayList

        //重点:掌握在自己的程序中调用其他包下的程序的注意事项
        //1同一个包下的程序可以直接访问,(eg:test1与Introduce都在一个包下,可以直接访问)
        test1 a=new test1();
        a.print();



        //3.访问其他包下的程序,必须导包才可以访问,鼠标放在test3上选中import class可以自动导入
        test2 b=new test2();
        b.print();
                //eaxmple 2
        test3 c=new test3();
        c.print();

        //4自己的程序中调用Java提供的程序,也需要先导入才可以使用,注意Java.lang包下的程序是不需要我们导入包的,可以直接使用
        Scanner sc=new Scanner(System.in);//System.in 是 Java 标准库中的一个预定义输入流对象,
        // 通常表示标准输入(通常是键盘输入)。当你创建一个 Scanner 对象并将 System.in 传递给它时,你告诉 Scanner 从标准输入流读取数据。
        String s="study";//lang包,所以不会导入
        Random r=new Random();


        //5访问多个其他包下的程序,这些程序名又一样的情况下,默认只能导入一个程序,另一个必须带包名和类名来访问,
        // try3和try4的包中都有test5暂时选择try3中的包导入
        test5 t3=new test5();
        t3.print();//try3中的test5
        //此时需要使用try4中的test5就需要带上包名

        API.try4.test5 d=new API.try4.test5();
        d.print();


    }



}

自动导包设置:

二 String ,API

(1)String 的两种创建方法:

package String_API;

public class StringTry {
    public static void main(String[] args) {
        //掌握String对象,并封装要处理的字符串的两种方式
        //1直接双引号的带字符串对象,封装字符串数据
        String name="learn Java";
        System.out.println(name);

        //2.new String 创建字符串对象,并调用构造器初始化字符串
        String rs1=new String();
        System.out.println(rs1);//打印的是空白

        String rs2 =new String("learn python");
        System.out.println(rs2);
        //传字符数组
        char[] chars={'a','飞','学'};
        String rs3=new String(chars);
        System.out.println(rs3);

        //字节数组转换成字符串对象
        byte[] bytes={98,97,99};
        String rs4=new String(bytes);
        System.out.println(rs4);//bac

    }
}

三:常用字符串的调用方法:

package String_API;

public class StringTheold {
    public static void main(String[] args) {
        String s="学习Java";
        //1.获取字符串的长度
        System.out.println(s.length());//6,中文也是一个字符
        //2 charAt 提取字符串中某个索引位置处的字符
        char c = s.charAt(1);
        System.out.println(c);//习,说明字符串下标从零开始

        //字符串的遍历s.length.fori实现使用for循环来遍历(0~5)
        for (int i = 0; i < s.length(); i++) {
            char ch=s.charAt(i);
            System.out.println(ch);//会自动换行

        }
        System.out.println("------------------3---------------");
        //3.toCharArray():将字符串转换成字符数组再进行遍历
        char[] chars=s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }
//4.equals():判断字符串内容一样就返回true
        String s1=new String("学习");
        String s2=new String("学习");
        System.out.println(s1==s2);//false,因为==会判断地址是否一样
//        int a=1;
//        int b=1;
//        System.out.println(a==b);//true
//所以在字符串中应该用equals方法,实现比较字符串的值
        System.out.println(s1.equals(s2));
        System.out.println("---------------5-------------");
        //equalsIgnoreCase()
        String c1="34A1fg";
        String c2="34a1FG";
        System.out.println(c1.equals(c2));//false
        System.out.println(c1.equalsIgnoreCase(c2));//true

        //
        System.out.println("-------------------6---------------");
        //substring(a,b);截取字符串内容[a,b]为下标

        String s3="Java是最好的编程语言之一";
        String sub=s3.substring(0,8);//左闭右开
        System.out.println(sub);//Java是最好的

        System.out.println("------------------7--------------");
        //substring(c);截取字符串内容,从下标c开始一直截取到最后
        String s4=s3.substring(4);
        System.out.println(s4);//是最好的编程语言之一


        System.out.println("--------------8---------------");
        //replace();把字符串中某个内容替换成新内容,并返回心得字符串对象给我们,常用于替换敏感词
        String info="这个电影不好看";
        String rs3=info.replace("不好看","***");
        System.out.println(rs3);


        System.out.println("-------------------9=---------------");
        //contains()判断字符串中是否包含某个关键字
        String info2="这个电影是最好的,我不爱Java";
        System.out.println(info2.contains("Java"));//true
        System.out.println(info2.contains("java"));//false

        System.out.println("-------------10--------------------");
        //startWith();判断字符串是否以某个字符串开头
        String rs4="张三丰";
        System.out.println(rs4.startsWith("张"));
        System.out.println(rs4.startsWith("张三"));//true

        System.out.println("----------------11----------------");
        //split():把字符串按照指定内容分割成多个字符串,放到一个字符串数组中返回给我们
        String rs="张无忌,周芷若,殷素素,赵明";
        String[] s7=rs.split(",");//代表为,为中断将内容隔开,注意判断是中文还是英文逗号
        for (int i = 0; i < s7.length; i++) {
            System.out.println(s7[i]);
        }




    }
}

(三)String的注意事项

(1)

//1字符串是不变的,他们的值在创建之后无法修改,字节缓冲区支持可变字符串,因为String对象是不可变的,所以可以共享他们。
//每次试图改变字符串对象时,实际上是产生了新的字符串对象,变量每次都是指向了新的字符串对象,之前的字符串对象实际上没有改变,因此String对象是不可变的
String name="Java";
name+="最好";//+运算会产生一个新的对象”Java最好“,将这个存放在堆内存中的对象的地址赋给存放在栈内存中的String name中
name+="的语言之一";
System.out.println(name);

(2)

//2只要是以”...“写出的字符串对象,会放在 堆内存 中的字符串常量池中存储。且相同内容的字符串只存储一份
//但是,通过new方式创建的字符串对象,每New一次都会产生一个新的对象放在堆内存中
String s1="abc";
String s2="abc";
System.out.println(s1==s2);//判断地址是否相同:true

(3)

char[] chs={'a','b','c'};
String s1=new String("abc");
String s2=new String("abc");
System.out.println(s1==s2);//false  :通过new方式创建的字符串对象,每New一次都会产生一个新的对象放在堆内存中

package String_API;

public class Attention {
    public static void main(String[] args) {
        //1字符串是不变的,他们的值在创建之后无法修改,字节缓冲区支持可变字符串,因为String对象是不可变的,所以可以共享他们。
        //每次试图改变字符串对象时,实际上是产生了新的字符串对象,变量每次都是指向了新的字符串对象,之前的字符串对象实际上没有改变,因此String对象是不可变的
        String name="Java";
        name+="最好";//+运算会产生一个新的对象”Java最好“,将这个存放在堆内存中的对象的地址赋给存放在栈内存中的String name中
        name+="的语言之一";
        System.out.println(name);
        //2只要是以”...“写出的字符串对象,会放在 堆内存 中的字符串常量池中存储。且相同内容的字符串只存储一份
        //但是,通过new方式创建的字符串对象,每New一次都会产生一个新的对象放在堆内存中
        String s1="abc";
        String s2="abc";
        System.out.println(s1==s2);//判断地址是否相同:true


        String a1=new String("abc");
        String a2=new String("abc");
        System.out.println(a1==a2);//false  :通过new方式创建的字符串对象,每New一次都会产生一个新的对象放在堆内存中
    }
}

四:案例-登陆界面

package String_API;

import java.util.Scanner;

public class StringApply {
    public static void main(String[] args) {

        for (int i=0;i<3;i++) {//6,按ctrl+Alt+T键将选中内容放入循环
            //1开发一个登陆界面

            Scanner sc=new Scanner(System.in);
            System.out.println("------------请输入登录名称-----------");
            String loginName=sc.next();
            System.out.println("------------请输入登录密码-----------");
            String PassWord=sc.next();
            //5开始调用登陆方法判断是否陆成功
            boolean result=login(loginName,PassWord);
            if(result){
                System.out.println("欢迎进入系统");
                break;
            }
            else{
                System.out.println("密码错误,请重新输入");
            }
        }


    }
    /*2开发一个登陆方法,接受用户的登录名和密码*/

    public static boolean login(String loginName,String PassWord){
        //3准备一份系统正确的用户名和密码
        String okLoginName="itheima";
        String okPassWord="123456";

        //4开始正式判断用户是否登陆成功
       /* if(okLoginName.equals(loginName) && okPassWord.equals(PassWord)){//注意不适用==,否则不是比较值,而是地址
            //登陆成功
            return true;

        }
        else{
            return false;
        }*/
        //上面代码等价于:
        return okLoginName.equals(loginName) && okPassWord.equals(PassWord);
    }
}

五-验证码开发

package String_API;

import java.util.Random;

public class StringApply2 {
    public static void main(String[] args) {
        //使用String开发验证码,验证码的每位可能是数字大小写字母
        System.out.println(createcode(4));

    }
    /*1设计一个方法,返回指定位数的验证码*/
    public static String createcode(int n){
        /*2定义两个变量,一个是记住产生的随机验证码,一个记住可能使用的随机字符*/
        String code="";
        String data="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
        Random r=new Random();
        //3开始定义一个循环,选择产生每位随机字符
        for(int i=0;i<n;i++){
            //4随机一个字符范围内的索引
            int index=r.nextInt(data.length());//填入范围长度
            //5根据索引去全部字符中提取该字符
            code+=data.charAt(index);


        }
        return code;
    }
}

2:ArrayList的API学习

2.1ArrayList的方法概述

package List;

import java.util.ArrayList;

public class arraylist {
    public static void main(String[] args) {
//1创建ArrayList的集合对象
        ArrayList list=new ArrayList();
        //(1)add()将指定元素添加到集合末尾
        list.add("java");
        list.add("java");//可以有重复
        list.add("888.8");
        System.out.println(list);
        //ArrayList和String一样会根据地址找到其中的内容,所以打印出来的是list中的内容
        //约束集合类型:
        ArrayList<String> list2=new ArrayList<>();
        list2.add("jahdja");
        System.out.println(list2);


//2:add(index,element)在此集合的指定位置中插入指定元素
        list.add(1,"add_ele");
        System.out.println("------删除之前---------");
        System.out.println(list);

        //3:remove(),删除指定索引处的元素,返回被删除的元素
        System.out.println(list.remove(3));//“888.8”被删除并返回
        System.out.println(list.remove("java"));//仅删除索引最小的一个(第一次出现),不是所有java元素都删除
        System.out.println(list);
        //set(index,element),将指定索引处的元素替换为指定元素
        list.set(1,"learn java");
        System.out.println(list);

    }

}

2.2ArrayList应用案例

package List;

import java.util.ArrayList;
//掌握从容器中找出某些数据并成功删除的技巧
public class ArrayListApply {
    public static void main(String[] args) {
       //1.创建一个ArrayList集合对象
       ArrayList<String> list=new ArrayList();
       list.add("Java入门");
       list.add("宁夏枸杞");
       list.add("黑枸杞");
       list.add("人字拖");
       list.add("特技枸杞");
       list.add("零食");
        System.out.println(list);
        //2开始完成需求,从集合中找出包含枸杞的数据,并删除:list.fori
        //注意删除一个元素后,后面元素向前移,导致下标改变
       /* for (int i = 0; i < list.size(); i++) {
            //取出当前遍历到的数据
            String ele= list.get(i);
            //判断该字符串中是否包含枸杞
            if(ele.contains("枸杞")){
                System.out.println(ele);
                //直接从集合中删除该元素
                list.remove(ele);
            }

        }*/

        //解决方式一:每次删除一个元素后,就让i往左退一步
       /* for (int i = 0; i < list.size(); i++) {
            //取出当前遍历到的数据
            String ele = list.get(i);
            //判断该字符串中是否包含枸杞
            if (ele.contains("枸杞")) {
                System.out.println(ele);
                //直接从集合中删除该元素
                list.remove(ele);
                i--;

            }
        }
        System.out.println(list);*/
        //方法二:从集合后面倒着遍历并删除就没有问题了
        for(int i= list.size()-1;i>=0;i--){
            //取出当前遍历到的数据
            String ele = list.get(i);
            //判断该字符串中是否包含枸杞
            if (ele.contains("枸杞")) {
                System.out.println(ele);
                //直接从集合中删除该元素
                list.remove(ele);


            }
        }
        System.out.println(list);


    }
}

3.综合案例

主程序:

package List;

import java.util.ArrayList;

public class Apply2 {
    public static void main(String[] args) {
        //商家菜品上架
        //1.设计一个菜品类food,负责创建菜品对象,封装菜品数据
/*

        //2.模拟一些菜品数据
        ArrayList<food> foods=new ArrayList<>();
        food s=new food();
        s.setName("小龙虾");
        s.setPrice(99.8);
        foods.add(s);

        for (int i = 0; i < foods.size(); i++) {
            System.out.println(foods.get(i).getName()+"    "+foods.get(i).getPrice());
        }
*/
        //2.设计一个菜品操作类FoodOperator,负责完成对菜品的业务实现,上架和浏览
        //3运行程序
        FoodOperator f=new FoodOperator();
        f.start();

    }
}

food类,定义变量

package List;

public class food {
    private String foodname;
    private double price;
    private String desc;//描述
    public void setName(String foodname){
        this.foodname=foodname;
    }
    public String getName(){
        return this.foodname;
    }

    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;
    }

    public food(){

    }

    public food(String foodname, double price, String desc) {
        this.foodname = foodname;
        this.price = price;
        this.desc = desc;
    }
}

foodOperator类

package List;

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

public class FoodOperator {
    //1.定义一个ArrayList集合对象,负责菜品对象信息
    private ArrayList<food> a=new ArrayList<>();
    public void defFoodInfo(){
        food f=new food();
        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);

        //将菜品对象放入集合中
        a.add(f);
        System.out.println("菜品信息添加成功");
    }

    public void printDetail(){
        //6展示菜品信息
        if(a.size()==0) {
            System.out.println("暂无菜品,快去上架吧!!!");
            return ;
        }

            for(int i=0;i<a.size();i++){
                food t=a.get(i);
                System.out.println(t.getName()+"   "+t.getPrice()+"    "+t.getDesc());
                System.out.println("--------------------");
            }

    }

    //7设置start()方法,实现菜单选择
    public void start(){
        System.out.println("菜单选择");
        System.out.println("1.上架菜单");
        System.out.println("2.展示菜单");
        System.out.println("3.退出程序");
        while(true){
            System.out.println("输入数字实现对应功能");
            Scanner sc=new Scanner(System.in);
            String command=sc.next();
            switch(command){
                case "1":
                    defFoodInfo();
                    break;
                case "2":
                    printDetail();
                    break;
                case "3":
                    System.out.println("正在退出...");
                    return ;
                default:
                    System.out.println("命令不存在,请重新输入!!!");

            }
        }

    }


}

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半截詩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值