API(Application Programming Interface, 应用程序编程接口)
Java写好的技术(功能代码),可以直接调用

1.String

String类定义的变量可以用于存储字符串,同时String类提供了很多操作字符串的功能,可以直接使用

String类的特点:String其实常被称为不可变字符串类型,它的对象在创建后不能被更改
以""方式给出的字符串对象,在字符串常量池中存储

String变量每次的修改其实都是产生并指向了新的字符串对象

1.创建字符串对象的2中方式

方式一:直接使用""定义

String name = "张三"

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

构造器 说明
piblic String() 创建一个空白字符串对象,不含有任何内容
public String(String original) 根据传入的字符串内容,来创建字符串对象
public String(char[] chs) 根据字符数组的内容,来创建字符串对象
public String(byte[] chs) 根据字节数组的内容,来创建字符串对象
public class StringDemo2 {public static void main(String[] args) {// 1.public String() 创建一个空白字符串对象,不含有任何内容String s1 = new String();System.out.println(s1);// 2.public String(String) : 根据传入的字符串内容,来创建字符串对象String s2 = new String("张三");// 3. publlic String(char[] c) : 根据字符数组的内容,来创建字符串对象char[] chars = {'a', 'b', 'c' , 'd'};String s3 = new String(chars);System.out.println(s3); // abcd// 4.public String(byte[] b): 根据字节数组的内容,来创建字符串对象byte[] bytes = {100,120,45,67};String s4 = new String(bytes);System.out.println(s4);  // dx-CSystem.out.println("----------");String s5 = "abc";String s6 = "abc";System.out.println(s5 == s6); // trueString s7 = new String(chars);String s8 = new String(chars);System.out.println(s7 == s8); // false}
}

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

代码分析

String s2 = new String("abc");  // 这一句代码实际上创建了两个对象
String s1 = "abc";     // 这句代码创建了0个对象
System.out.println(s1 == s2) // false
String s1 = "abc";
String s2 = "ab";
String s3 = s2 + "c";
System.out.println(s1 == s3); // false
String s1 = "abc";
String s2 = "a" + "b" + "c";
System.out.println(s1 == s2); // true

Java存在编译优化机制,程序在编译时:“a” + “b” + “c” 会直接转成 “abc”

2.String类常用api

字符串比较不适合用 ==
推荐使用String类提供的"equals"比较:只关心内容一样即可

方法名 说明
public boolean equals(Object anObject) 将此字符串与指定对象进行比较,只关心字符内容是否一致
public boolean equalsIgnoreCase(String anotherString) 将此字符串与指定对象进行比较,忽略大小写比较字符串,只关心字符串内容是否一致
public static void main(String[] args) {String name = "zhangsan";String password = "123456";// 2.请您输入登录名称和密码Scanner sc = new Scanner(System.in);System.out.println("登录名称:");String uname = sc.next();System.out.println("登录密码:");String upassword = sc.next();//        if(uname == name && upassword == password) {//            System.out.println("登录成功");
//        } else {//            System.out.println("用户名或密码错误");
//        }if(uname.equals(name) && upassword.equals(password)) {System.out.println("登录成功");} else {System.out.println("用户明或密码错误");}
}

String常用API

方法名 说明
public int length() 获取字符串的长度
public char charAt(int index) 获取某个索引位置处的字符
public char[] toCharArray() 把字符串转换成字符串数组
public String substring(int beginIndex, int endIndex) 包前不包后(字符串截取)
public String substring(int beginIndex) 从当前索引一致截取到末尾
public String replace(CharSequence target, CharSequence replacement) 替换
public boolean containes(CharSequence s) 判断字符串中是否包含
public boolean startWiths(String prefix) 判断是否以某个字符串开始
public String[] split(String s) 按照某个内容把字符串分割成字符串数组返回
public static void main(String[] args) {// 1.public int length() : 获取字符串的长度String name = "我是zhangsan";System.out.println(name.length());// 2.public char charAt(int index) 获取某个索引位置处的字符char c = name.charAt(2);System.out.println(c);System.out.println("遍历字符串中的每个数组");for (int i =0;i<name.length();i++) {char ch = name.charAt(i);System.out.println(ch);}// 3.public char[] toCharArray() : 把字符串转化成字符数组char[] chars = name.toCharArray();for (int i = 0; i < chars.length; i++) {char ch = chars[i];System.out.println(ch);}// 4.public String substring(int beginIndex. int endIndex): 截取内容,包前不包后String name2 = "mynameislisi";System.out.println(name2.substring(0, 3));// 5.public String substring(int beginIndex)System.out.println(name2.substring(2));// 6。public String replace(CharSequence target,CharSeqiece replacement)System.out.println(name2.replace("i", "爱"));// 7.public boolean containe(CharSequence s)System.out.println(name2.contains("i"));// 8.public boolean starsWith(String prefix)System.out.println(name2.startsWith("my"));// 9. public String[] split(String s):按照某个内容把字符串分割成字符串数组String name3 = "张三,李氏,张三丰,wuhu";String[] names = name3.split(",");for (int i = 0; i < names.length; i++) {System.out.println(names[i]);}}

2.案例:String类开发验证码功能

public static void main(String[] args) {String datas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890";Random r = new Random();String code = "";for (int i = 0; i < 5; i++) {// 随机一个索引int index = r.nextInt(datas.length());char c = datas.charAt(index);code += c;}System.out.println(code);
}

3.案例:模拟用户登录功能

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

    public static void main(String[] args) {// 1.定义正确的登录名称和密码String okLoginName = "admin";String okPassword = "123456";// 2.定义一个循环,循环3次,让用户登录Scanner sc = new Scanner(System.in);for (int i = 0; i < 3; i++) {System.out.println("请输入登录名称");String username = sc.next();System.out.println("请输入登录密码");String password = sc.next();// 3.判断登录名是否成功if(okLoginName.equals(username)) {if(okPassword.equals(password)) {System.out.println("登录成功");break;}else {System.out.println("密码错误");}} else {System.out.println("用户名错误");}}}

4.案例:手机号屏蔽

以字符串的形式从键盘接收一个手机号,将中间四位数屏蔽

   public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请您输入您的手机号码");String tel = sc.next();// 截取号码的前三位,后四位String before = tel.substring(0,3);String after = tel.substring(7);String phone = before + "****" + after;}

5.ArrayList

集合与数组类似,也是一种容器,用于装数据的
数组的特点:数组定义完成并启动后,类型确定,长度固定
问题:在个数不能确定,且要进行增删数据操作的时候,数组是不太合适的

集合的特点:集合的大小不固定,启动后可以动态变化,类型也可以选择不固定
集合非常适合做元素个数不确定,且要进行增删操作的业务场景
集合提供了许多丰富好用的功能,而数组的功能很单一
ArrayList是集合中的一种,它支持索引

ArrayList集合的对象获取
public ArrayList() 创建一个空的集合对象

ArrayList集合添加元素的方法
public boolean add(E e) 将指定的元素追加到此集合的末尾
public void add(int index, E element) 在此集合中的指定位置插入指定的元素

public static void main(String[] args) {// 1.创建ArrayList集合的对象ArrayList list = new ArrayList();// 添加元素list.add("张三");list.add("李四");list.add("王五");System.out.println(list.add("赵六"));System.out.println(list);// 在指定索引插入元素list.add(1, "王二");System.out.println(list);
}

泛型
ArrayList:可以在编译阶段约束集合对象只能操作某种数据类型
ArrayList 此集合只能操作字符串类型的元素
ArrayList 此集合只能操作整数类型的元素
注意:集合中只能存储引用类型,不支持基本数据类型

public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>(); // JDK 1.7开始,泛型后面的类型声明可以不写list.add("zhangsan");ArrayList<Integer> list2 = new ArrayList<Integer>();list2.add(22);
}

ArrayList集合常用方法

方法名称 说明
public E get(int index) 返回指定索引处的元素
public int size() 返回集合中的元素的个数
public E remove(int index) 删除指定索引处的元素,返回被删除的元素
public boolean remove(Object o) 删除指定的元素,返回删除是否成功
public E set(int index, E element) 修改指定索引处的元素,返回被修改的元素
public static void main(String[] args) {// 1.创建ArrayList集合的对象ArrayList<String> list = new ArrayList();list.add("张三");list.add("李四");list.add("王五");list.add("赵六");list.add("徐七");// 1.public E get(int index) 获取某个索引位置处的元素String e = list.get(2);System.out.println(e);// 2.public int size() 获取集合的大小(元素个数)System.out.println(list.size());// 3.完成元素遍历for (int i = 0; i < list.size(); i++) {String e1 = list.get(i);System.out.println(e1);}// 4.public E remove(int index)  删除某个索引位置的元素怒,并且返回被删除的元素System.out.println(list.remove(1));System.out.println(list);// 5.public boolean remove(Object o) 直接删除元素,删除成功返回true,失败返回false(若有多个相同元素,默认删除第一个)System.out.println(list.remove("张三"));System.out.println(list);// 6.public E set(int index, E element): 修改某个索引位置处的元素值,返回修改前的值System.out.println(list.set(0,"郭八"));System.out.println(list);
}

6.案例:遍历并删除元素值

需求:某个班级学生的分数集合,删除80分以下的值

public static void main(String[] args) {ArrayList<Integer> scores = new ArrayList();scores.add(89);scores.add(78);scores.add(94);scores.add(23);scores.add(87);scores.add(84);scores.add(97);scores.add(55);scores.add(66);scores.add(89);System.out.println(scores);// 1.遍历集合中的每个元素for (int i = scores.size()-1; i >= 0; i--) {int score = scores.get(i);if(score < 80) {scores.remove(i);}}System.out.println(scores);
}

7.案例:影片信息在程序中的表示

需求:某影院系统需要在后台存储三部电影,然后依次显示出来

public class Move {private String name;private double score;private String actor;public Move() {}public Move(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 static void main(String[] args) {// 1.定义一个电影类:move// 2.定义一个ArrayList集合存储这些影片对象ArrayList<Move> movies = new ArrayList();// 3,创建影片对象,封装电影数据,把对象加入到集合中Move m1 = new Move("约会大作战1", 7.8,"橘公司");Move m2 = new Move("约会大作战2", 7.9,"橘公司");Move m3 = new Move("约会大作战3", 6.0,"橘公司");movies.add(m1);movies.add(m2);movies.add(m3);// 4.遍历集合中的影片对象并展示出来for (int i = 0; i < movies.size(); i++) {Move m = movies.get(i);System.out.println("片名:"+m.getName()+"评分:"+m.getScore()+"作者:"+m.getActor());}}

集合中存储的元素并不是对象本身,而是对象的地址

8.案例:学生信息系统的数据搜索

public class Student {private String studyId;private  String name;private int age;private String className;public Student() {}public Student(String studyId, String name, int age, String className) {this.studyId = studyId;this.name = name;this.age = age;this.className = className;}public String getStudyId() {return studyId;}public void setStudyId(String studyId) {this.studyId = studyId;}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 getClassName() {return className;}public void setClassName(String className) {this.className = className;}
}
    public static void main(String[] args) {ArrayList<Student> students = new ArrayList();students.add(new Student("201701","张三", 20, "软件工程1班"));students.add(new Student("201702","李四", 23, "软件工程2班"));students.add(new Student("201703","王五", 19, "计算机科学与技术1班"));students.add(new Student("201704","赵六", 21, "物联网工程2班"));System.out.println("学号\t\t班级\t\t姓名\t\t年龄");for (int i = 0; i < students.size(); i++) {Student s = students.get(i);System.out.println(s.getStudyId()+"\t\t"+s.getClassName()+"\t\t"+s.getName()+"\t\t"+s.getAge());}// 搜索Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入要查找的学号");String id = sc.next();Student s = getStudentByStudyId(students, id);if(s == null) {System.out.println("查无此人");} else {System.out.println(s.getStudyId()+"\t\t"+s.getClassName()+"\t\t"+s.getName()+"\t\t"+s.getAge());}}}/** @param students* @param studyId* */public  static Student getStudentByStudyId(ArrayList<Student> students, String studyId) {for (int i = 0; i < students.size(); i++) {Student s = students.get(i);if(s.getStudyId().equals(studyId)) {return  s;}}return null;}

7.Java常用API(String、ArrayList)相关推荐

  1. Java | Java常用API方法总结

    Java常用API方法总结 常用API JavaAPI 1 java.lang String StringBuilder Integer parseXxx Math Object System Thr ...

  2. Java 常用API

    Java 常用API JFC(Java类库) 是系统提供的已实现的标准类的集合,是Java编程的API(Application Program Interface) 可帮助开发者方便.快捷地进行软件开 ...

  3. Java 常用API的运用,效率及技巧

    1.     Java面向对象基本概念 2.     System 3.     String, StringBuffer 4.     数值,字符,布尔对象与简单类型的操作 5.     Class ...

  4. Java --- 常用API

    常用API 方法重载: 方法名相同,方法接收的参数不同 static: 修饰的类,可以直接使用类名进行调用 方法名 说明 public static abs(int a) 返回参数的绝对值 publi ...

  5. JAVA常用API的笔记

    常用API 1.定义: 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来 2.String String 类代表字符串,Java 程序中的所有字符串文字(例如" ...

  6. 安卓逆向-盲狙加密方法 | 安卓/JAVA 常用API查询网站

    目标app-引力波 首先了解在java中进行md5加密会用到的方法,然后对方法进行hook盲狙 在https://tool.oschina.net/apidocs/apidoc?api=jdk-zh进 ...

  7. Java常用API——ArrayList

    PS:使用Ctrl+鼠标左键可以查看源码 用数组存储对象 创建Person类 package ArrayList_test;public class Person {private int age;p ...

  8. Java常用API(二)String

    String --- 代表字符串的类, 是一个最终类,不能被继承,没有子类.所有的字符串都是他的对象 . 字符串是一个常量,定义之后存储在运行时常量池中且只存储一份,定义好之后不可改变,一样字符串是被 ...

  9. java api 第一个类是_JAVA常用API:String 类的常用方法

    字符串是一个对象,有很多方法可以使用 1. length();返回字符串的长度 String str = "abcd"; int len = str.length(); 2. is ...

最新文章

  1. Google Test(GTest)使用方法和源码解析——预处理技术分析和应用
  2. shell 流程控制语句
  3. MFC之进度条CProgressCtrl
  4. ffmpeg rtmp 不清晰_知识储备:理解RTMP、HttpFlv和HLS的正确姿势
  5. html中免费的四级联动,利用JS实现省市区街道四级联动插件
  6. 实战06_SSM整合ActiveMQ支持多种类型消息
  7. 我写了一个java实体类,implements了Serializable接口,然后我如何让serialversionUID自动生成...
  8. Android 系统(214)---Android 7.1.1时间更新NITZ和NTP详解
  9. SQL基础实例(学生课程系统)
  10. 小括号教学设计导入_【干货】教学设计万能模板已到达,各科都能用!
  11. Looper对文件描述符的监控与处理
  12. mysql 注入攻击与防御_防御SQL注入和XSS攻击
  13. 用Python分析1585家电商车厘子销售数据,发现这些秘密
  14. 架设国外服务器怎么维护,架设海外服务器流程分享
  15. NodeJS 运行环境
  16. 知识型IP与网红的区别
  17. 解决phpstorm运行很卡问题
  18. gensim使用汇总
  19. Excel表格的密码设置与取消
  20. Linux之日志系统

热门文章

  1. TurboLinux入门教程:第七课TurboLinux简介(转)
  2. TiBERT:藏语预训练语言模型——中文翻译
  3. BigDecimal的加减乘除,以及四舍五入和比较大小
  4. DLang vs GoLang
  5. 手机排位战:华为OPPO大涨 三星持续走低
  6. 爱一个要多久!忘一个人要多久!
  7. 自习室管理系统的设计与实现
  8. elasticsearch在重启机器后出现[transport.netty][solr001] exception caught on transport layer[[[id:0x2d16759]]
  9. html5 2d变形过渡注意,2D变形(css3)transform
  10. 【论文精读】Learning Edge-Preserved Image Stitching from Large-Baseline Deep Homography