目录

1.定义

2.String类

2.1 String概述

2.2String对象的创建

2.2.1创建字符串对象有两种方式

2.2.2区别

2.3 String类常用API

2.3.1 equals

2.3.2 length

2.3.3 charAt

2.3.4 toCharArray

2.3.5 substring(int beginIndex,int endIndex)

2.3.6 replace()

2.3.7 contains

2.3.8 startsWith

2.3.9 split

2.4 String类案例

2.4.1 开发验证码功能

2.4.2 模拟用户登录功能

2.4.3 手机号码屏蔽

3.集合、ArrayList

3.1集合概述

3.2 ArrayList基础

3.3 泛型

3.4 ArrayList常用API

3.4.1 get(int index)

3.4.2 size()

3.4.3 集合的遍历

3.4.4 remove

remove(Object o)

3.4.5 set(int index,E element)

3.5 ArrayList集合案例

3.5.1 遍历并删除元素值

3.5.2 影片信息在程序中表示

3.5.3 学生信息系统的数据搜索


1.定义

API是什么:Application Programming Interface(应用程序编程接口)

  • Java写好的程序,我们可以之间调用。
  • Oracle也为Java写好的程序提供了相应的API文档(文档可以去官网下载)

2.String类

2.1 String概述

String我们都很熟悉了,它可以用于存储字符串,同时String提供了很多字符串的功能可以使用,如在我们输入密码时要比较输入的密码是否正确;关键字的屏蔽;关键字的搜索都使用到了String类。

简单地说:String是字符串类型,可以定义字符串变量指向字符串对象

值得注意的是:String定义的字符串对象是不可以修改的。但这么说就有疑问了,明明在之前我们是可以通过对字符串修改的,可以将一个字增加到多个字。原因:

  • String变量每次的修改其实是产生并指向了新的字符串对象。
  • 原来的字符串对象都是没有改变的,所以称不可变字符串。

举个栗子:假如定义了一个字符串String name = "诸葛",这时堆内存中有一个字符串常量池用来存放“诸葛”,栈内存中的name指向“诸葛”,接着进行字符串拼接操作name+=“亮”,输出结果确实为“诸葛亮”,为什么呢?这时亮字并不是单纯地拼到常量池中,而是在常量池增加了一个新的字符串“亮”,然后在再堆内存中拼接一个字符串“诸葛亮”,这时name指向“诸葛亮”。总结一下,此时堆内存中的字符串常量池中有两个字符串分别为“诸葛”和“亮”,堆内存中有一个字符串为“诸葛亮”,此时name指向“诸葛亮”,所以字符串对象确实没有改变。

2.2String对象的创建

2.2.1创建字符串对象有两种方式

方式一:直接用""定义,这也是我们之前一直用的方式。

//方式一String name = "王德发";System.out.println(name);

方式二:通过String类的构造器创建对象。

//方式二//1.pubic String() 创建一个空白字符串对象,没有意义,一般不用String s1 = new String();System.out.println(s1);//2.pubic String(String original) 根据传入的字符串内存创建字符串对象,和方式一一样,不如之间用方式一String s2 = new String("我爱你");System.out.println(s2);//3.pubic String(char[] chs)  根据字符数组的内容,来创建字符串对象char[] c = {'a','b','爱','你'};String s3 = new String(c);System.out.println(s3);//ab爱你//4.pubic String(byte[] chs) 根据字节数组的内容创建字符串对象byte[] b = {97,98,99};String s4 = new String(b);System.out.println(s4);//abc

输出结果为:

王德发我爱你
ab爱你
abc

2.2.2区别

  • 以""方式创建的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存出一份。
  • 通过构造器new对象,每new一次都会产生一个新的对象,放在堆内存中。

举个栗子

System.out.println("--------------------");String ss1 = "abc";String ss2 = "abc";System.out.println(ss1==ss2);//比较的是地址为true,说明是同一个字符串String ss3 = new String("abc");String ss4 = new String("abc");System.out.println(ss3==ss4);//false

2.3 String类常用API

2.3.1 equals

经过前面的内容我们发现当我们想比较两个字符串是否相等时,不能直接比较,因为可能即使两个字符串完全一样但是一个在字符串常量池一个在堆内存中,这时结果就是false的,所以这时就可以使用到equals来进行比较,equals只关心内容是否一样

举个栗子:

不使用equals   结果是登陆失败。

package com.itzw.string;import java.util.Scanner;public class Test02 {public static void main(String[] args) {//模拟数据库中存储的账号和密码String okUsername = "zhangsan";String okPassword = "123456";//模拟输入的账户和密码Scanner sc = new Scanner(System.in);System.out.print("请输入用户名:");String username = sc.next();System.out.print("请输入密码:");String password = sc.next();//比较if (okUsername == username && okPassword == password){System.out.println("登陆成功!");}else{System.out.println("登陆失败,用户名或密码错误!");}}
}

使用equals  登陆成功。

 if (okUsername.equals(username) && okPassword.equals(password)){System.out.println("登陆成功!");}else{System.out.println("登陆失败,用户名或密码错误!");}

2.3.2 length

计算字符串长度

String s1 = "我他么爱你王德发";
System.out.println(s1.length());//8

2.3.3 charAt

获取某个索引位置的字符串

char c = s1.charAt(1);System.out.println(c);//他System.out.println("---------------------");System.out.println("遍历字符串中每个字符");for (int i = 0; i < s1.length(); i++) {System.out.println(s1.charAt(i));}

2.3.4 toCharArray

将字符串转换成字符数组,输出的结果和上一个一样

char[] chars = s1.toCharArray();for (int i = 0; i < chars.length; i++) {System.out.println(chars[i]);}

2.3.5 substring(int beginIndex,int endIndex)

截取字符串内容(包前不包后)

String substring = s1.substring(0, 5);
System.out.println(substring);//我他么爱你

2.3.6 replace()

替换某些字符

String s2 = "我他妈爱你王德发,你他妈知道了吗";//很显然有敏感词汇,要换成**String replace = s2.replace("他妈", "**");System.out.println(replace);//我**爱你王德发,你**知道了吗

2.3.7 contains

判断是否包含某些字符

boolean contains = s2.contains("他");boolean contains1 = s2.contains("她");System.out.println(contains);//trueSystem.out.println(contains1);//false

2.3.8 startsWith

判断是否以某些字符开始

System.out.println(s2.startsWith("我他妈"));//trueSystem.out.println(s2.startsWith("我他嘛"));//false

2.3.9 split

按照某个内容把一整个字符串分成字符串数组返回

String name = "张麻子,马邦德,黄思浪,张牧之";String[] names = name.split(",");for (int i = 0; i < names.length; i++) {System.out.println(names[i]);}

2.4 String类案例

2.4.1 开发验证码功能

需求:

  • 随机产生一个五位验证码,每位可能是数字、大写字母、小写字母。

分析:

  • 定义一个String类型的变量存储a-z A-Z 0-9之间的字符
  • 循环5次,随机一个范围内的索引,获取对应字符连接起来即可。

2.4.2 模拟用户登录功能

需求:

  • 模拟用户登录功能,最多给三次机会

分析:

  • 系统后台定义好正确的登录名称,密码
  • 使用循环控制三次,让用户输入正确的用户名和密码,判断是否登录成功,成功则不再进行登录;失败给出提示,让用户继续。
package com.itzw.string;import java.util.Scanner;/*
模拟用户登录*/
public class Test05 {public static void main(String[] args) {//用户名String okUsername = "zw";//密码String okPassword = "123456";int sum = 3;Scanner sc = new Scanner(System.in);for (int i = 1; i <= 3; i++) {System.out.print("请输入您的账号:");String username = sc.next();System.out.print("请输入您的密码:");String password = sc.next();if (okUsername.equals(username)){if (okPassword.equals(password)){System.out.println("登陆成功!");break;}else{if (sum - i > 0){System.out.println("您输入的密码有误!您还有" + (sum - i) + "次机会");}else{System.out.println("输入错误超过三次,下次再来吧您勒!");}}}else{if (sum - i > 0)System.out.println("您输入的账号有误!您还有" + (sum - i) + "次机会");elseSystem.out.println("输入错误超过三次,下次再来吧您勒!");}/*if (okUsername.equals(username) && okPassword.equals(password)){System.out.println("登陆成功!");break;}else{if (i < 2)System.out.println("用户名或密码有误,请重新输入!");elseSystem.out.println("输入错误超过三次,改天再来吧您勒");}*/}}
}

2.4.3 手机号码屏蔽

分析:

  • 截取字符串前三位,截取字符串后四位。
  • 将截取后的两个字符串,中间加上****进行拼接。
  • 例如输入手机号1638925389得到163****5389
package com.itzw.string;import java.util.Scanner;/*
手机号码屏蔽*/
public class Test06 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入手机号:");String num = sc.next();String forward = num.substring(0, 3);String end = num.substring(7, 11);String newNum = forward + "****" + end;System.out.println(newNum);}
}

3.集合、ArrayList

3.1集合概述

什么是集合呢?集合与数组类似,都是用来装数据的。但为什么还要用集合呢。因为数组在创建时类型确定,长度固定,若我有新的需求如增删,则数组不合适。

集合的特点:

  • 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。
  • 集合非常适合做元素个数不确定,且要进行增删操作的业务场景。
  • 集合的提供了许多丰富、好用的功能,而数组的功能很单一。

3.2 ArrayList基础

创建ArrayList数组和添加数据

package com.itzw.arraylist;import java.util.ArrayList;public class Test01 {public static void main(String[] args) {//创建ArrayList集合对象ArrayList list = new ArrayList();//增加数据,可以增加任何数据list.add(1);list.add("王德发");list.add(true);list.add('周');list.add(3.14);System.out.println(list);//[1, 王德发, true, 周, 3.14]//指定位置增加元素list.add(1,"周杰伦");System.out.println(list);//[1, 周杰伦, 王德发, true, 周, 3.14]}
}

3.3 泛型

泛型概述

  • ArrayList<E>: 其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型。

举例:

  • ArrayList<String> :此集合只能操作字符串类型的元素。
  • ArrayList<Integer>: 此集合只能操作整数类型的元素。

值得注意的是:集合中只能存储引用类型,不支持基本数据类型。

package com.itzw.arraylist;import java.util.ArrayList;public class Test02 {public static void main(String[] args) {//创建一个只能装入String类型的ArrayList集合//ArrayList<String> list = new ArrayList<String>();ArrayList<String> list = new ArrayList<>();//后面的String可以省略list.add("王德发");list.add("马邦德");//list.add(1);装入数字就会出错。//添加整数ArrayList<Integer> list1 = new ArrayList<>();list1.add(1);}
}

3.4 ArrayList常用API

3.4.1 get(int index)

获取到某个索引位置的元素的值

        ArrayList<String> list = new ArrayList<>();list.add("java");list.add("html");list.add("mysql");list.add("mybatis");list.add("javabean");String s = list.get(2);System.out.println(s);//mysql

3.4.2 size()

得到集合大小

        int size = list.size();System.out.println(size);//5

3.4.3 集合的遍历

        for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}

3.4.4 remove

remove((int index))

删除某个索引位置的值,并返回删除的值

String remove = list.remove(1);System.out.println(remove);//htmlSystem.out.println(list);//[java, mysql, mybatis, javabean]

remove(Object o)

删除指定的值,成功返回true,失败返回false,若有多个元素相同,则只删除第一个

System.out.println(list.remove("mysql"));//trueSystem.out.println(list);//[java, mybatis, javabean]System.out.println(list.remove("javaa"));//false

3.4.5 set(int index,E element)

修改某个位置的值,并返回修改前的值

        String c = list.set(1, "C");System.out.println(c);//mybatisSystem.out.println(list);//[java, C, javabean]

3.5 ArrayList集合案例

3.5.1 遍历并删除元素值

需求:

  • 某个班级的考试在系统上进行,成绩大致为: 98,77, 66, 89,79,50,100
  • 现在需要先把成绩低于80分以下的数据去掉。

分析:

  • 定义ArrayList集合存储多名学员的成绩。
  • 遍历集合每个元素,如果元素值低于80分,去掉它。.
  • 值得注意的是,用传统的方法会有bug,因为每次删除一个,集合大小就发生变化。
package com.itzw.arraylist;import java.util.ArrayList;public class Test04 {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(98);list.add(77);list.add(66);list.add(89);list.add(79);list.add(50);list.add(100);//方法一/*for (int i = 0; i < list.size(); i++) {if (list.get(i) < 80){list.remove(i);i--;//每次删除要减一,因为每次删除元素,集合大小就减一。}}System.out.println(list);*///方法二for (int i = list.size() - 1; i >= 0 ; i--) {if (list.get(i) < 80){list.remove(i);}}System.out.println(list);}
}

3.5.2 影片信息在程序中表示

需求:

  • 某影院系统需要在后台存储上述三部电影,然后依次展示出来。

分析:

  • 定义一个电影类,定义一个集合存储电影对象。
  • 创建3个电影对象,封装相关数据,把3个对象存入到集合中去。
  • 遍历集合中的3个对象,输出相关信息。
  • 值得注意的是,不能直接输出集合,因为存入集合的都是地址。
package com.itzw.arraylist;import java.util.ArrayList;public class Test05 {public static void main(String[] args) {Movie m1 = new Movie("肖申克的救赎",9.7,"罗宾斯");Movie m2 = new Movie("霸王别姬",9.6,"张国荣,张丰毅");Movie m3 = new Movie("阿根正传",9.5,"汤姆汉克斯");ArrayList<Movie> movies = new ArrayList<>();movies.add(m1);movies.add(m2);movies.add(m3);for (int i = 0; i < movies.size(); i++) {Movie movie = movies.get(i);System.out.println("电影名称:" + movie.getName());System.out.println("电影评分:" + movie.getScore());System.out.println("电影主演:" + movie.getActor());System.out.println("============================");}}
}//电影类
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;}}

3.5.3 学生信息系统的数据搜索

需求:

  • 后台程序 需要存储如.上学生信息并展示,然后要提供按照学号搜索学生信息的功能。

分析:

  • 定义Student类,定义ArrayList集合存储如上学生对象信息,并遍历展示出来。
  • 提供一一个方法,可以接收ArrayList集合, 和要搜索的学号,返回搜索到的学生对象信息,并展示。
  • 使用死循环,让用户可以不停的搜索。
package com.itzw.arraylist;import java.util.ArrayList;
import java.util.Scanner;public class Test06 {public static void main(String[] args) {ArrayList<Student> students = new ArrayList<>();students.add(new Student("180302","叶孤城",23,"护理一班"));students.add(new Student("180303","东方不被",23,"推拿二班"));students.add(new Student("180304","西门吹雪",26,"中药学四班"));students.add(new Student("180305","梅超风",26,"神经科二班"));while(true){System.out.print("请输入学号:");Scanner sc = new Scanner(System.in);String no = sc.next();Student s = getStudentById(students, no);if (s == null){System.out.println("查无此人!");}else{System.out.println("学号:" + s.getNo());System.out.println("姓名:" + s.getName());System.out.println("年龄:" + s.getAge());System.out.println("班级:" + s.getClas());System.out.println("=================");}}}/*** 根据学生学号返回学生信息* @param students 存储全部学生信息的集合* @param no 学生学号* @return 学生对象|null*/public static Student getStudentById(ArrayList<Student> students,String no){for (int i = 0; i < students.size(); i++) {Student student = students.get(i);if (no.equals(student.getNo())){return student;}}return null;}
}//学生类
class Student{private String no;//学号private String name;//姓名private int age;//年龄private String clas;//班级public Student() {}public Student(String no, String name, int age, String clas) {this.no = no;this.name = name;this.age = age;this.clas = clas;}public String getNo() {return no;}public void setNo(String no) {this.no = no;}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 getClas() {return clas;}public void setClas(String clas) {this.clas = clas;}
}

Java学习-API相关推荐

  1. Java 学习API(一)

    文章目录 前言 API 文档注释 String类 创建字符串 拼接字符串 格式化字符串 String方法 substring() indexOf() charAt() trim() startsWit ...

  2. Java学习--API和异常

    Api和异常 概述: 内部类:就是在一个类中定义一个类.在类A中定义一个类B,B就叫做A的内部类 格式: public calss 类名{修饰符 class 类名{} }//范例 public cla ...

  3. hadoop学习笔记(八):Java HDFS API

    hadoop学习笔记(八):Java HDFS API 阅读目录 一.使用HDFS FileSystem详解 回到顶部 一.使用HDFS FileSystem详解 HDFS依赖的第三方包: hadoo ...

  4. Java学习必不可少的网站,快收藏起来

    java技术在IT互联网行业的发展前景一直在提升,越来越多的人都在学习java技术,今天小编来给大家提供一些学习Java的网站集合,希望能够帮助到正在学习java技术的同学. Java学习必不可少的网 ...

  5. 我也没想到,Java开发 API接口可以不用写 Controller了

    大家好,我是小富~ 今天介绍我正在用的一款高效敏捷开发工具magic-api,顺便分享一点工作中使用它的心得 缘起 先说一下我为什么会使用这个工具? 最近新启动一个项目,业务并不算复杂,那种典型的管理 ...

  6. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  7. 我的WEB之路(一)-2.JAVA学习路线

    第一阶段:针对性夯实JAVA基础 课程名称 核心要点 完成目标 Java基础入门 搭建Java开发和运行环境等,IDE工具的学习和使用,Java语言基础,数据类型,运算符,条件和循环,数组使用等,Ja ...

  8. 转:Java学习路线图,专为新手定制的Java学习计划建议

    转自:http://blog.csdn.net/jinxfei/article/details/5545874 怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业 ...

  9. Java学习---RMI 技术分析[Hessian]

    一.什么是Hessian Hessian 是一个基于 binary-RPC 实现的远程通讯 library.使用二进制传输数据.Hessian通常通过Web应用来提供服务,通过接口暴露.Servlet ...

最新文章

  1. Handler、Looper与MessageQueue源码分析
  2. [Windows编程] 如何捕捉程序异常/crash 并生成 dump 文件
  3. 结对项目-四则运算 “软件”之升级版
  4. ASP.NET MVC中实现多个按钮提交的几种方法
  5. 吴裕雄--天生自然 高等数学学习:多元函数的概念
  6. java处理excel(java使用Apache POI处理Excel)
  7. python处理数据库_python操作数据库
  8. Lock和synchronized的选择
  9. javascript原型_使用JavaScript的示例报告卡Web应用程序原型
  10. 文件服务器ping延时大,windowns 2008 ping 127.0.0.1延迟大的解决方法。
  11. turtlebot rviz错误rviz error no transporm from base to map
  12. PDE抛物型方程数值解法总结与例题分析
  13. Terminate Instance 操作详解 - 每天5分钟玩转 OpenStack(33)
  14. vivado快速下载及解压安装教程
  15. JavaScript 基础知识总结(一)
  16. SAP 生产成本明细报表
  17. 跨平台APP开发心路历程
  18. 那些散落在人间的天使
  19. 多网聚合路由器全新面世,带来联网新体验
  20. A block IDR(s) method for nonsymmetric linear systems with multiple right-hand sides

热门文章

  1. 从vivo Photo Lab“影像实验室”透视门店新价值
  2. 有中国电信手机一定要看。CTWAP和CTNET是什么意思?有什么区别?
  3. eclipse 提示destination folder must be accessible
  4. ES安装报错信息(持续更新)
  5. Java程序员编程学习之路资源合集
  6. erdaicms旅游网站程序2017款新模版正式上线
  7. 计算机视觉要掌握哪些知识,学习了哪些知识,计算机视觉才算入门?
  8. 2017年携程旅游校招Java研发笔试编程题(3个)
  9. 海康威视2019校招
  10. vue.js中文官网下载vue.js失败了?