Java大数据开发和安全开发
- (一)Java常用的API
- 1.1 什么是API
- 1.2 什么叫做包
- 1.2.1 如何调用其他包的程序
- 1.3 JAVA的API:String
- 1.3.1 创建String对象
- 1.3.2 String提供的操作字符串数据的常用方法
- 1.3.3 String练习案例
(一)Java常用的API
1.1 什么是API
API(全称 Application Programming Interface:应用程序编程接口),就是别人写好的一些程序,给咱们程序员直接拿去调用即可解决问题的。
为什么要学别人写好的程序?
- 不要重复造轮子
- 开发效率高!
Java提供了哪些API给咱们使用呢?
- JAVA的开发手册就集中介绍了这个API,但是不是所有的API都要学
1.2 什么叫做包
JAVA的开发手册中涉及的程序都是各种程序的包,那什么是包呢?
- 包是用来分门别类的管理各种不同程序的,类似于文件夹,建包有利于程序的管理和维护。
建包的语法格式:
1.2.1 如何调用其他包的程序
在自己程序中调用其他包下的程序的注意事项:
如果当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用)
如果当前程序中,要调用其他包下的程序,则必须在当前程序中导包,才可以访问!导包格式:import 包名.类名
如果当前程序中,要调用lava提供的程序,也需要先导包才可以使用;但是ava.lang包下的程序是不需要我们导包的,可以直接使用。
如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。
package com.qianxin.bao;
import com.qianxin.bao.demo1.Demo;
import com.qianxin.bao.demo1.Test;
import java.util.Random;
import java.util.Scanner;
/**
目标:掌握如何在自己的程序中调用其他包下的程序,有哪些注意事项。
*/
public class Testpkg {
public static void main(String[] args) {
// 1、同一个包下的程序,可以直接访问。
Demo3 d = new Demo3();
d.print();
// 2、访问其他包下的程序,必须导包才可以访问。
Demo d2 = new Demo();
d2.print();
//3、自己的程序中调用Java提供的程序,也需要先导包才可以使用;注意:Java.lang包下的程序是不需要我们导包的,可以直接使用。
Scanner sc = new Scanner(System.in);
String s = "黑马";
Random r = new Random();
//4、访问多个其他包下的程序,这些程序名又一样的情况下,默认只能导入一个程序,另一个程序必须带包名和类名来访问。
Demo d3 = new Demo();
d3.print();
com.qianxin.bao.demo2.Demo d4 = new com.qianxin.bao.demo2.Demo();
d4.print();
}
}
1.3 JAVA的API:String
为什么要学字符串的处理呢?
- 验证密码 百度搜索 都是用我们输入的东西去查找搜索相关内容是否存在
java.lang.String 代表字符串 封装字符串数据 处理字符串的方法步骤:
- 1、创建对象
- 2、封装字符串数据
- 3、调string的方法
1.3.1 创建String对象
String创建对象封装字符串数据的方式
- 方式一:Java 程序中的所有字符串文字(例如“abc”)都为此类的对象。
String name="小黑";
String schoolName="黑马程序员";
- 方式二:调用String类的构造器初始化字符串对象
public class StringDemo {
public static void main(String[] args) {
// 目标:掌握创建String对象,并封装要处理的字符串的两种方式
// 1、直接双引号得到字符串对象,封装字符串数据
String name ="itheima";
System.out.println(name);
// 2、new String创建字符串对象,并调用构造器初始化字符串
String rs1= new String();
System.out.println(rs1);
String rs2 = new String( "itheima");
System.out.println(rs2);
char[] chars = {'a','黑','马'};
String rs3 = new String(chars);
System.out.println(rs3);
byte[] bytes ={97,98,99};
String rs4 = new String(bytes);
System.out.println(rs4);
}
}
1.3.2 String提供的操作字符串数据的常用方法
只学习常用的这几个即可
package com.qianxin.bao.String;
public class StringDemo1 {
public static void main(String[] args){
// 目标:快速熟悉String提供的处理字符串的常用方法。
String s="黑马Java";
// 1、获取字符串的长度
System.out.println(s.length());
// 2、提取字符串中某个索引位置处的字符
char c=s.charAt(1);
System.out.println(c);
// 3、字符串的遍历
for(int i=0;i<s.length();i++) {
//i=012345
char ch = s.charAt(i);
System.out.println(ch);
}
System.out.println("--------------------");
//4、把字符申转换成字符数组,再进行遍历
char[] chars =s.toCharArray();
for(int i=0;i<chars.length; i++){
System.out.println(chars[i]);
}
// 4、判断字符串内容,内容一样就返回true
String s1 = new String( "黑马");
String s2 = new String( "黑马");
System.out.println(s1 == s2);// false
System.out.println(s1.equals(s2));//true
//5、忽略大小写比较字符串内容
String c1="34AeFG";
String c2 ="34aEfg";
System.out.println(c1.equals(c2));//false
System.out.println(c1.equalsIgnoreCase(c2));//true
//6、截取字符串内容(包前不包后的)
String s3 ="Java是最好的编程语言之一";
String rs = s3.substring(0,8);
System.out.println(rs);
// 7、从当前索引位置一直截取到字符串的末尾
String rs2 =s3.substring(5);
System.out.println(rs2);
//8、把字符串中的某个内容替换成新内容,并返回新的字符串对象给我们
String info ="这个电影简直是个垃圾,垃圾电影!!";
String rs3=info.replace( "垃圾","**");
System.out.println(rs3);
//9、判断字符串中是否包含某个关键字
String info2 ="Java是最好的编程语言之一,我爱Java,Java不爱我!";
System.out.println(info2.contains("Java"));
System.out.println(info2.contains("java"));
System.out.println(info2.contains("Java2"));
// 10、判断字符串是否以某个字符串开头。
String rs4 ="张三丰";
System.out.println(rs4.startsWith("张"));
System.out.println(rs4.startsWith("张三"));
System.out.println(rs4.startsWith("张三2"));
// 11、把字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回给我们
String rs5 ="张无忌,周芷若,殷素素,赵敏";
String[] names = rs5.split(",");
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
}
}
String注意事项
String注意事项1:String的对象是不可变字符串对象
- 注意:只要是以“…”双引号方式写出的字符串对象,会在堆内存中的字符串常量池中存储。
public class StringDemo2 {
public static void main(String[] args) {
// 目标:搞清楚String使用时的几个注意事项。
// 1、String的对象是不可变的???
String name ="黑马";
name +="程序员";//name = name +“程序员”
name +="播妞";
System.out.println(name);
}
}
结论:每次试图改变字符串对象实际上是新产生了新的字符串对象了,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实是没有改变的,因此说String的对象是不可变的。
String的第二点注意事项:
public class StringDemo2 {
public static void main(String[] args) {
// 目标:搞清楚String使用时的几个注意事项。
// 1、String的对象是不可变的???
String name ="黑马";
name +="程序员";//name = name +“程序员”
name +="播妞";
System.out.println(name);
//2、只要是以双引号给出的字符串对象,存储在常量池中,而且内容相同时只会存储一份
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
// 3、new String创建字符串对象,每次new出来的都是一个新对象,放在堆内存中
char[] chars = {'a','b','c'};
String a1 = new String(chars);
String a2 = new String(chars);System.out.println(a1 == a2);
}
}
黑马程序员播妞
true
false
Java为什么只要是以双引号给出的字符串对象,存储在常量池中,而且内容相同时只会存储一份?
- 节约内存
通过new构造器得到字符串对象
阅读程序并回答问题:
阅读下面的两个程序,请写出程序打印的结果是多少
- Java存在编译优化机制,程序在编译时:会直接转成“abc”,以提高程序的执行性能
1.3.3 String练习案例
需求:
系统正确的登录名和密码是:itheima/123456,请在控制台开发一个登录界面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进入系统!",即可停止程席(注意:要求最多给用户三次登录机会)
import java.util.Scanner;
public class TestString {
public static void main(String[] args) {
int i = 0;
String name ="itheima";
String pass = "123456";
while (i < 3){
Scanner sc = new Scanner(System.in);
System.out.println("请输入账号和密码");
String name1 = sc.next();
String pass1 = sc.next();
if (name1.equals(name) & pass1.equals(pass)){
System.out.println("登陆成功!!!");
break;
}else {
System.out.println("登陆失败!!!");
}
i++;
}
}
}
import java.util.Scanner;
public class TestString {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
Scanner sc = new Scanner(System.in);
System.out.println("请您输入登录名称:");
String loginName = sc.next();
System.out.println("请您输入登录密码:")
;
String passWord = sc.next();
//5、开始调用登录方法,判断是否登录成功
boolean rs = login(loginName, passWord);
if (rs) {
System.out.println("恭喜您,欢迎进入系统~~");
break;//跳出for循环,代表登录完成
} else {
System.out.println("登录名或者密码错误,请您确认~~");
}
}
}
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;
}
}
}
1、字符串的比较使用 ==比较好吗? 为什么? 什么时候使用==?
● 不好,对于字符串对象的比较,==比较的是地址,容易出业务bug
● 基本数据类型的变量或者值应该使用==比较,
2、开发中比较字符串推荐使用什么方式比较?
使用String提供的equals方法,它只关心字符串内容一样就返回true。