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("命令不存在,请重新输入!!!");
}
}
}
}