String其实常被称为不可变字符串类型,它的对象在创建后不能被更改
// 方式一:直接使用双引号得到字符串对象 String name="我爱你中国"; System.out.println(name); // 方式二: 1、public String():创建一个空白字符串对象,不含有任何内容(几乎不用) String s1=new String(); System.out.println(s1); // 2、public String(String):根据传入的字符串内容,来创建字符串对象(几乎不用) String s2=new String("我是中国人"); System.out.println(s2); // 3、public String(char[] c):根据字符数组的内容,来创建字符串对象 char[] chars={'我','是','中','国','人'}; String s3=new String(chars); System.out.println(s3); // 4、public String(byte[] b):根据字节数组的内容,来创建字符串对象 byte[] bytes={97,98,99,65,66,67}; String s4=new String(bytes); System.out.println(s4);
区别:
- 以” “方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份
- 通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中
String okUser="root"; String okPass="123456"; Scanner sc=new Scanner(System.in); System.out.println("请输入用户名:"); String User=sc.next(); System.out.println("请输入密码:"); String pass=sc.next(); if(okUser.equals(User)&&okPass.equals(pass)){ System.out.println("登录方式2成功"); }else{ System.out.println("登录失败!"); }
开发中当对基本类型比较时使用"=="
public static void main(String[] args) { // 1.public int length():获取字符串长度 String name="我爱你中国love"; System.out.println(name.length()); // 2.public char charAt(int index):获取某个索引位置处的字符 char c=name.charAt(1); System.out.println(c); for (int i = 0; i < name.length(); i++) { char ch=name.charAt(i); System.out.println(ch); } // 3.public char[] toCharArray():把字符串转换成字符数组 char[] ch=name.toCharArray(); for (int i = 0; i < ch.length; i++) { char cha=ch[i]; System.out.println(cha); } }
// 4.public String substring(int beginIndex,int endIndex):截取内容(含头不含尾) String name2="Java是最厉害的编程语言"; String ss=name2.substring(0,9); System.out.println(ss); String ss1=name2.substring(4,9); System.out.println(ss1); // 5.public String substring(int beginIndex):从当前索引一直截取到末尾 String ss2=name2.substring(4); System.out.println(ss2); // 6.public String replace(CharSequence target,CharSequence replacement) String name3="金三胖是最厉害的90后,金三胖棒棒的,我好爱金三胖"; String rp=name3.replace("金三胖","***"); System.out.println(rp); // 7.public boolean contains(CharSequence s) System.out.println(name3.contains("金三胖")); System.out.println(name3.contains("金二胖")); // 8.public boolean startsWith(String prefix) System.out.println(name3.startsWith("金三胖")); System.out.println(name3.startsWith("金三胖是最厉害的")); System.out.println(name3.startsWith("金二胖")); // 9.public String[] split(String s):按照某个内容把字符串分割成字符串数组返回 String name4="王宝强,贾乃亮,黄晓明"; String[] result=name4.split(","); for (int i = 0; i < result.length; i++) { System.out.println("分割为:"+result[i]); }
随机产生一个5位的验证码,每位可能是数字,大写字母,小写字母
// 1.定义可能出现的字符信息 String st="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Random r=new Random(); // 2.循环5次,每次生成一个随机的索引,提取对应的字符连接起来即可 String ch=""; for (int i = 0; i < 5; i++) { //随机一个索引 int num=r.nextInt(st.length()); ch+=st.charAt(num); } //3.输出字符中的变量即可 System.out.println(ch);
模拟用户登录功能,最多只给三次机会
// 1.定义正确的登录名称和密码 String okLoginName="admin"; String okLoginPass="123456"; // 2.定义一个循环,循环3次,让用户登录 Scanner sc=new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("请您输入用户登录名称:"); String loginName=sc.next(); System.out.println("请您输入用户登录密码:"); String loginPass=sc.next(); // 3.判断登录是否成功 if(loginName.equals(okLoginName)){ // 4.判断密码是否正确 if(loginPass.equals(okLoginPass)){ System.out.println("登录成功!欢迎进入系统随意浏览~~~"); break; }else{ // 密码错误了 System.out.println("您的登录密码输入不正确!还剩"+(3-i-1)+"次机会登录"); } }else{ System.out.println("您的登录名称不正确!还剩"+(3-i-1)+"次机会登录"); } }
以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽,最终效果为:
158****7839
System.out.println("请输入手机号码:"); Scanner sc=new Scanner(System.in); String phoneNum=sc.next(); String[] phoneArray=new String[3]; phoneArray[0]=phoneNum.substring(0,3); phoneArray[1]=phoneNum.substring(3,7); phoneArray[2]=phoneNum.substring(7); String hideAfter=phoneArray[0]+"****"+phoneArray[2]; System.out.println("隐藏手机号之后为:"+hideAfter);
ArrayList是集合中的一种,它支持索引
// 1.创建ArrayList集合的对象 ArrayList list=new ArrayList(); // 2.添加数据 list.add("Java"); list.add("Java"); list.add("赵敏"); list.add(83); list.add(42.2); list.add(false); list.add(true); list.add('a'); System.out.println(list); // 3.给指定索引位置插入元素 list.add(3,"张无忌"); System.out.println(list);
ArrayList<E>:其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型 举例: ArrayList<String> : 此集合只能操作字符串类型的元素 ArrayList<Integer> :此集合只能操作整数类型的元素
注意:集合中只能存储引用类型,不支持基本数据类型。
ArrayList<String> list=new ArrayList<>(); list.add("Java"); list.add("MySql"); list.add("c"); System.out.println(list);
ArrayList<String> list = new ArrayList<>(); list.add("Java"); list.add("PHP"); list.add("Java"); list.add("Python"); list.add("MyBatis"); list.add("C#"); System.out.println("创建的集合为:"+list); // 1.public int size():获取集合的大小(元素个数) System.out.println("集合的大小为:" + list.size()); // 2.public E get(int index):获取某个索引位置处的元素值 System.out.println("集合中第四个元素为:"+list.get(3)); // 3.完成集合的遍历 for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } // 4.public E remove(int index):删除某个索引位置处的元素值,并返回被删除的元素值 String four=list.remove(4); System.out.println(four); System.out.println(list); // 5.public boolean remove(Object o):直接删除元素值,删除成功返回true,删除失败返回false System.out.println(list.remove("Java")); System.out.println(list); System.out.println(list.remove("C#")); System.out.println(list); // 6.public E set(int index,E element):修改某个索引位置处的元素值 list.set(0,"c++"); System.out.println(list);
某个班级的考试在系统上进行,成绩大致为:98,77,66,89,79,50,100;现需要先把成绩低于80分以下的数据去掉
ArrayList<Integer> scores = new ArrayList<>(); scores.add(98); scores.add(77); scores.add(66); scores.add(89); scores.add(79); scores.add(50); scores.add(100); System.out.println(scores); //方法一: // 1.遍历集合中的每个元素 for (int i = 0; i < scores.size(); i++) { // 2.判断这个分数是否低于80分,如果低于则从集合中删除它 if(scores.get(i)<80){ scores.remove(i); i-=1; } } System.out.println(scores); //方法二: // 1.遍历集合中的每个元素 for (int i = scores.size()-1; i >=0; i--) { int sc=scores.get(i); // 2.判断这个分数是否低于80分,如果低于则从集合中删除它 if(sc<80){ scores.remove(i); } } System.out.println(scores);
某影院系统需要在后台存储上述三部电影,然后依次展示出来。
// 1.定义一个电影类:Movie // 2.定义一个ArrayList集合存储这些影片对象 ArrayList<Movie> movies = new ArrayList<>(); // 3.创建影片对象封装电影数据,把对象加入到集合中去 movies.add(new Movie("《肖申克的救赎》",9.7,"罗宾斯")); movies.add(new Movie("《霸王别姬》",9.6,"张国荣、张丰毅")); movies.add(new Movie("《阿甘正传》",9.5,"汤姆,汉克斯")); // 4.遍历集合中的影片对象并展示出来 for (int i = 0; i < movies.size(); i++) { Movie m=movies.get(i); System.out.println("片名:"+m.getName()); System.out.println("评分:" + m.getScore()); System.out.println("主演:" + m.getActor()); System.out.println("---------------------------------"); } ------------------------------------------------------------------ //movie类 class Movie{ private String name; private double score; private String actor; public Movie() { } public Movie(String name, double score, String actor) { this.name = name; this.score = score; this.actor = actor; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public String getActor() { return actor; } public void setActor(String actor) { this.actor = actor; } }
结论:集合中存储的元素并不是对象本身,而是对象的地址。
后台程序需要存储如上学生信息并展示,然后要提供按照学号搜索学生信息的功能
public class Student { private int id; private String name; private int age; private String sclass; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSclass() { return sclass; } public void setSclass(String sclass) { this.sclass = sclass; } public Student(int id, String name, int age, String sclass) { this.id = id; this.name = name; this.age = age; this.sclass = sclass; } public Student() { } } ---------------------------------------------------------------------------- public static void getStudent() { // 1.定义一个学生类,后期用于创建对象封装学生数据 // 2.定义一个集合对象用于封装学生对象 ArrayList<Student> students = new ArrayList<>(); students.add(new Student(20180302,"叶孤城",23,"护理一班")); students.add(new Student(20180303,"东方不败",23,"推拿二班")); students.add(new Student(20180304,"西门吹雪",26,"中药学四班")); students.add(new Student(20180305,"梅超风",26,"神经科2班")); System.out.println("学号\t\t姓名\t\t年龄\t\t班级"); // 3.遍历集合中的每个学生对象并展示其数据 for (int i = 0; i < students.size(); i++) { Student s=students.get(i); System.out.println(s.getId()+"\t\t"+s.getName()+"\t\t"+s.getAge()+"\t\t"+s.getSclass()); } // 4.让用户不断的输入学号,可以搜索出该学生对象信息并展示出来(独立成方法) Scanner sc = new Scanner(System.in); while(true){ System.out.println("请您输入要查询的学生的学号:"); int id = sc.nextInt(); Student s=getStudentByid(students,id); // 判断学号是否存在 if(s!=null){ // 找到该学生了,信息如下 System.out.println(s.getId()+"\t\t"+s.getName()+"\t\t"+s.getAge()+"\t\t"+s.getSclass()); }else{ System.out.println("查无此人"); } } } /** * 根据学号,去集合中找出学生对象并返回 * @param students * @param id * @return */ public static Student getStudentByid(ArrayList<Student> students,int id){ for (int i = 0; i < students.size(); i++) { Student s=students.get(i); if(s.getId()==id){ return s; } } return null; //查无此学号 }