文章目录
Java常用类
1.API概述
API(Application Programming Interface)概述:
a:应用程序编程接口
b:帮助文档
如何使用帮助文档:
1.打开帮助文档
2.点击显示,找到索引,看到输入框
3.你要找谁直接搜索
4.java.lang包下的类可以直接使用,
其他包下的类如果要使用必须导包。
5.看类的解释和说明
6.学习构造方法
7.使用成员方法
package com.scy;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串数据");
String line = sc.nextLine();
System.out.println("line:"+line);
}
}
2.Object
toString()的重写
Object:是类层次结构的根类,
所有的类都直接的或者间接的继承该类。
构造方法:Object()
如果直接输出对象名,输出底层调用的是该对象的toString()
查看API,我们发现建议所有子类都重写toString()
*直接右键generate自动生成toString()的方法重写
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
public static String valueOf(Object obj) {
return (obj == null) ?
"null" : obj.toString();
getClass().getName() + '@' + Integer.toHexString(hashCode())}
符号"==":可以用来比较基本数据类型判断值是否相同。
也可以用来判断对象在堆中的地址值是否相同。
equals()重写
// public boolean equals(Object obj)
public boolean equals(Object obj) {
return (this == obj);
我们可以发现equals()方法默认比较的是对象的地址是否相同
如果我们需要用equals()判断对象内容是否相同那么需要重写
该方法。
*直接右键generate自动生成equals()的方法重写
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age &&
Objects.equals(name, student.name);
}
文章目录
3.录入数据的基本操作Scanner类
步骤:
1.导包 import java.util.Scanner;
类中代码顺序: package ---> import --->class
2.创建键盘录入对象
Scanner sc = new Scanner(System.in)
3. 获取数据
int i = sc.nextInt()
package com.scy;
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int i = sc.nextInt();
System.out.println("i:"+i);
}
}
4.Java中的随机数Random类
作用:用于产生随机数,用法与Scanner类似。
使用步骤:
1.导包: import java.util.Random;
2.创建对象:Random r = new Random();
3.获取随机数: int number = r.nextInt(10);
获取范围:[0,10) 左闭有开
练习:系统产生一个1-100之间的随机数,请猜出这个数据是多少?
分析:产生随机数->键盘录入我们猜的数字(比较大小)->大就提示大了
小就提示小了。-->为了实现多次猜需要加上循环。(死循环)
import java.util.Random;
import java.util.Scanner;
public class RandomDemo {
public static void main(String[] args) {
Random r = new Random();
int number = r.nextInt(100) + 1;
while (true){
Scanner sc = new Scanner(System.in);
// 提示
System.out.println("请输入一个你猜的数:");
int guessNumber = sc.nextInt();
// 比较数据
if (guessNumber>number){
System.out.println("你猜得数字大了");
}
else if (guessNumber<number){
System.out.println("你猜得数字小了");
}
else {
System.out.println("你猜对了");
break;
}
}
}
}
## 3.String
String:代表字符串类
由多个字符组成的一串数据。
字符串的本质就是一个字符数组。
构造方法:
public String(String original) 把字符串数据封装成字符串对象
public String(char[] value) 把字符数组的数据封装成字符串对象
public String(char[] value,int offset, int count)
把字符数组的一部分封装成字符串对象
特点:Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现
```java
String s1 = new String("hello");
System.out.println(s1);
System.out.println("--------------");
char[] value = {'h','e','l','l','o'};
String s2 = new String(value);
System.out.println(s2);
System.out.println("--------------");
String s3 = new String(value,0,value.length-2);
System.out.println(s3);
System.out.println("--------------");
String s4 = "hello";
System.out.println(s4); //最常用
5.String类
String类创建对象的特点:
1.通过构造方法构造对象;
2.通过直接赋值的方式创建对象;
直接赋值的方式字符串时存在常量池中,目的时为了复用字符串数据;
通过构造方法创建的字符串实在堆内存中;
通过直接赋值的方式创建字符串对象实在方法区的常量池中;
String练习1
需求:模拟登录,给三次机会,并提示还有几次
分析: 定义两个字符串对象,用于存储已经存在的用户名和密码;
键盘录入用户名和密码;
录入密码与已经存在的比较;
如果内容相同提示登录成功;
如果内容不同提示登录失败,并提示还有几次机会;
equals(Object anObject) String类重写了该方法,来比较字符串的内容
equalsIgnoreCase(String anotherString) 比较字符串的内容(不区分大小写)
package com.scy09;
import java.util.Scanner;
public class StringDemo {
public static void main(String[] args) {
String username = "admin";
String password = "admin";
Scanner sc = new Scanner(System.in);
for (int i=0;i<3;i++){
System.out.println("请输入用户名");
String name = sc.nextLine();
System.out.println("请输入密码");
String pwd = sc.nextLine();
if(username.equals(name)&&password.equals(pwd)){
System.out.println("登录成功");
break;
}
else{
if ((2-i)==0){
System.out.println("登录失败,请与管理员练习");
}
else {System.out.println("登录失败,你还有"+(2-i)+"次机会");}
}
}
}
}
String练习2
需求:遍历字符串(获取字符串中的每一个字符)
分析:
返回值:char类型;
形式参数:int index
charAt(int index)
返回值:int类型;
形式参数:无
length()
public class StringDemo {
public static void main(String[] args) {
String s = "abcde";
// 原始做法
System.out.println(s.charAt(0));
System.out.println(s.charAt(1));
System.out.println(s.charAt(2));
System.out.println(s.charAt(3));
System.out.println(s.charAt(4));
for (int i=0;i<5;i++){
System.out.println(s.charAt(i));
}
System.out.println("--------------");
// String是否有方法返回字符串的个数?
for (int i=0;i<s.length();i++){
System.out.println(s.charAt(i));
}
}
}
String练习3
需求:把数组中的数据按照指定格式拼接成一个字符串;
int[] arr = {1,2,3};
输出结果:[1,2,3]
分析:
定义一个int类型数组
写方法实现把数组中的元素按照指定格式拼接成一个字符串
调用方法
输出结果
package com.scy09;
import java.util.Scanner;
public class StringDemo {
public static void main(String[] args) {
int[] arr = {1,2,3};
String result = arrayToString(arr);
System.out.println(result);
}
public static String arrayToString(int[] arr){
String s="";
s+="[";
for (int i=0;i<arr.length;i++){
if(i==arr.length-1){
s+=arr[i];
}
else {
s+=arr[i];
s+=", ";
}
}
s+="]";
return s;
}
}
String练习3
需求:字符串反转
键盘录入数据"abd"
输出结果:"cba"
package com.scy09;
import java.util.Scanner;
public class StringDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要反转的字符串:");
String s = sc.nextLine();
String result = StringReverse(s);
System.out.println(result);
}
public static String StringReverse(String s){
String s_new="";
for (int i=0;i<s.length();i++){
s_new += s.charAt(s.length()-i-1);
}
/*for (int i=s.length()-1;i>=0;i--){
s_new +=s.charAt(i);
}
*/
return s_new;
}
}
6.StringBuilder类
StringBuilder
概述:
如果按照上图这样构造字符串时,会造成方法区字符串常量池产生很多无用的常量,
即耗时,又浪费空间,而StringBuilder可以解决这个问题。
构造方法:
StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。
StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容。
java.lang.StringBuilder
StringBuilder:是一个可变的字符串类
与String区别:String的内容是固定的,而StringBuilder是一个可变的。
StringBuilder常用的方法
public StringBuilder append(任意类型) --添加功能
public StringBuilder reverse() --反转功能
package com.scy09;
import java.util.Scanner;
public class StringDemo {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
/*
StringBuilder sb2 = sb.append("hello");
System.out.println("sb:"+sb);
System.out.println("sb2:"+sb2);
System.out.println(sb==sb2); //true
*/
sb.append("hello"); *返回的是StringBuilder对象
sb.append("world");
sb.append(true);
sb.append(100);
// 链式编程
sb.append("hello").append("world").append(true).append(100);
System.out.println("sb:"+sb);
sb.reverse();
System.out.println("sb:"+sb);
}
}
StringBuilder练习1
需求:StringBuilder和String的相互转换
StringBuilder--->String: 通过StringBuilder中toString()方法实现
String-->StringBuilder: 通过StringBuilder(String str)构造方法实现
public static void main(String[] args) {
/*StringBuilder sb = new StringBuilder();
sb.append("hello");
String s = sb.toString();
System.out.println(s);
*/
String s = "hello";
StringBuilder sb = new StringBuilder(s);
System.out.println(sb);
}
StringBuilder练习2
需求:把一个数组拼接成一个字符串
int[] arr = {1,2,3};
输出结果:[1,2,3];
字符串拼接方式浪费空间,效率太底。
现在来用StringBuilder优化;
分析:
1.定义一个int类型的数组;
2.写方法实现把数组中的元素按照指定的格式拼接成字符串
明确返回值类型
明确输入参数列表
3.调用方法
4.输出结果
package com.scy09;
import java.util.Scanner;
public class StringDemo {
public static void main(String[] args) {
int[] arr = {1,2,3};
String result = arrayToString(arr);
System.out.println(result);
}
public static String arrayToString(int[] arr){
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i=0;i<arr.length;i++){
if (i==arr.length-1){
sb.append(arr[i]);
}
else {
sb.append(arr[i]);
sb.append(", ");
}
}
sb.append("]");
String s = sb.toString();
return s;
}
}
StringBuilder练习2
需求:把字符串反转
键盘录入“abc”
输出结果“cba”
分析:
1.创建一个字符串;
2.写方法返回反转后的结果
3.调用方法
4.输出结果
package com.scy09;
import java.util.Scanner;
public class StringDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要反转的字符串:");
String s = sc.nextLine();
String result = StringReverse(s);
System.out.println(result);
}
public static String StringReverse(String s){
StringBuilder sb = new StringBuilder(s);
String reverse = sb.reverse().toString();
return reverse;
}
}