3.1Java常用类(上)

976-沈同学

发表文章数:65

热门标签

首页 » Java » 正文

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.通过直接赋值的方式创建对象;

3.1Java常用类(上)
直接赋值的方式字符串时存在常量池中,目的时为了复用字符串数据;
通过构造方法创建的字符串实在堆内存中;
通过直接赋值的方式创建字符串对象实在方法区的常量池中;

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类

3.1Java常用类(上)

StringBuilder
概述:
	 如果按照上图这样构造字符串时,会造成方法区字符串常量池产生很多无用的常量,
	 即耗时,又浪费空间,而StringBuilder可以解决这个问题。
	
构造方法:
	StringBuilder()	构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。
	StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容。
	
java.lang.StringBuilder

3.1Java常用类(上)

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;
    }
}
标签:

拜师教育学员文章:作者:976-沈同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《3.1Java常用类(上)》 发布于2020-03-12

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录