javaSE学习的week12

1. Object类

package cn.hncu_01;
/*
 * java中,lang包下面的类都不需要导包,可以直接使用
 * 构造方法
 * 	Object() :无参构造
 * 		Object类的构造方法,默认先调用父类的无参构造
 * 
 * 成员方法
 * 	public int hashCode():返回该对象的hash值,hash值可以理解成地址
 * 	public final Class getClass():返回该对象的运行时类。
(反射时讲)
 * 	public String toString()返回该对象的字符串表示.(重要)
 * 	直接输出对象的字符串表示意义不大。我希望输出的是学生的姓名和年龄。怎么办?
 * 		一般都要重写toString()方法,怎么重写?
 * 			自动生成。atl + shift+s +s
 * 	注意:直接输出对象名,等价于调用该对象的toString()方法
 * 	public boolean equals(Object obj):(重要)比较两个对象是否相等。
 * 		equals
 * 			只能比较引用类型。默认比较的是对象的地址值是否相等。
 * 			但是比较对象的地址值意义不大。我们应该比较的是对象的成员变量的值,如果成员变量对应相等,则两个对象相等。
 * 			如何比较?
 * 				重写equals(),怎么重写?
 * 					自动生成。
 * 
 * 		==
 * 			基本类型:比较的值是否相等。如2==3
 * 			引用类型:比较的是对象的地址值是否相等。 如s1==s2
 * 	protected void finalize():用于垃圾回收。jvm会自动调用
 * 	protected Object clone():用于对象的复制。一般不用。
 */
public class Demo {
	public static void main(String[] args) {
		Student s1 = new Student("zhangsan",19);
		Student s2 = new Student("lisi",20);
		Student s3 = new Student("lisi",20);
		/*System.out.println(s1.hashCode());
		System.out.println(s2.hashCode());*/
		/*System.out.println(s1.toString());
		System.out.println(s2.toString());
		System.out.println(s1);
		System.out.println(s2);*/
		System.out.println(s1.equals(s2));//t
		System.out.println(s2.equals(s3));//
		System.out.println(s1==s2);
		System.out.println(s2==s3);
	}
}

2.Scanner类

package cn.hncu_02;
import java.util.Scanner;

/*
 * Scanner类
 * 
 * 构造方法
 * inputstream in = System.in;
 * Scanner(InputStream source) 
 * 
 * 成员方法:
 * 	hasNextXxx()  判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx
 * 	nextXxx()  获取下一个输入项。Xxx的含义和上个方法中的Xxx相同
 * 
 * 	nextInt():输入一个整数
 * 	nextLine():输入一个字符串
 */
public class Demo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		/*int  a = sc.nextInt();
		System.out.println(a);*/
		
		if(sc.hasNextInt()){
			int  a = sc.nextInt();
			System.out.println(a);
		}else{
			System.out.println("数据输入有误");
		}
	}
}

3 String类

构造方法

package cn.hncu_03;
/*
 * String类
 * 	String 类代表字符串.
 * 	字符串是常量;它们的值在创建之后不能更改。
 * 
 * 构造方法:
 * 	public String():无参构造
 * 	public String(byte[] bytes):把一个字符数组转成字符串
 * 	public String(byte[] bytes,int offset,int length):把一个字符数组的一部分转成字符串
 * 	public String(char[] value)::把一个字节数组转成字符串
 * 	public String(char[] value,int offset,int count):把一个字节数组的一部分转成字符串
 * 	public String(String original):把一个字符串转成字符串.(一般不用)
 */
public class Demo {
	public static void main(String[] args) {
		String s1 = "HelloWorld";
		String s2 = new String();//这个一般也不用
		
		byte[] bys = {97,98,99,100};//字节数组
		String s3 = new String(bys);
		System.out.println(s3);
		String s4 = new String(bys,1,2);//字节数组
		System.out.println(s4);
		
		//其余方法自己测试
	}
}

判断功能

package cn.hncu_03;
/*
 * String类的判断功能
 * 
 *  boolean equals(Object obj):比两个字符串是否相等.区分大写小字母
 *  boolean equalsIgnoreCase(String str):比两个字符串是否相等.不区分大写小字母
 *  boolean contains(String str):判断一个大字符串中是否包含小字符串
 *  boolean startsWith(String str):判断一个字符串是否以str开始
 *  boolean endsWith(String str):判断一个字符串是否以str结束
 *  boolean isEmpty():判断一个字符串是否为空
 */
public class Demo2 {
	public static void main(String[] args) {
		String s1 = "helloworld";
		String s2 = "HelloWorld";
		System.out.println(s1.equals(s2));
		System.out.println(s1.equalsIgnoreCase(s2));
		System.out.println(s1.startsWith("he"));
		System.out.println(s1.endsWith("llo"));
		System.out.println(s1.isEmpty());
	}
}
package cn.hncu_03;

import java.util.Scanner;

/*
 * 模拟登录,给三次机会,并提示还有几次.
 * 
 * 分析:
 * 	(1) 定义已经存在的用户名和密码.
 * 	(2) 键盘录入用户名和密码
 * 	(3) 比较(2)和(1)用户名和密码
 * 			如果相同,登录成功
 * 			否则,登录失败,提示还有几次机会
 * 	(4)	三次机会,用循环改进代码
 */
public class Demo3 {
	public static void main(String[] args) {
		//(1) 定义已经存在的用户名和密码.
		String username = "root";
		String password = "123";
		
		Scanner sc = new Scanner(System.in);
		int i = 0;
		while(i<3){
			//键盘录入用户名和密码
			System.out.println("请输入用户名和密码");
			String name = sc.nextLine();
			String pwd = sc.nextLine();
			
			//比较(2)和(1)用户名和密码
			if(username.equals(name)&&password.equals(pwd)){
				System.out.println("登录成功");
				break;
			}else{
				System.out.println("登录失败");
				System.out.println("您还有"+ (2-i) + "次机会");
			}
			i++;
		}
		
		sc.close();
		
		
	}
}

String类的获取功能

package cn.hncu_03;
/*
 *  int length():获取字符串的长度
 *  char charAt(int index):获取字符串指定位置的字符
 *  int indexOf(int ch):获取ch第一次出现的索引外置
 *  int indexOf(String str):获取str第一次出现的索引外置
 *  int indexOf(int ch,int fromIndex):从指定的起始位置开始,ch第一次出现的索引位置
 *  int indexOf(String str,int fromIndex)从指定的起始位置开始,str第一次出现的索引位置
 *  String substring(int start):从指定位置开始截取字符串.默认截取到末尾
 *  String substring(int start,int end):截取从指定外置开始到指定位置结束的字符串
 *  	注意:java中有一个原则:包左不包右
 */
public class Demo4 {
	public static void main(String[] args) {
		String s = "helloWorld";
		System.out.println(s.length());
		System.out.println(s.charAt(2));
		System.out.println(s.indexOf('o'));
		System.out.println(s.indexOf('o',5));
		System.out.println(s.substring(2,5));
	}
}
package cn.hncu_03;
/*
 * 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
 * 
 * 分析:
 * 	(1) 定义3个统计变量,已经已知字符串.
 * 	(2) 遍历这个这个字符串,获取字符串中的每一个字符
 * 		int length() char charAt(int index)
 * 	(3)	根据条件,求出3个统计变量的值
 * 		
 */
public class Demo5 {
	public static void main(String[] args) {
		String s = new String("adcSEc12S");
		int  bigCounte = 0;
		int smallCounte = 0;
		int numberCounte = 0;
		
		for(int i=0;i<s.length();i++){
			char ch = s.charAt(i);
			if(ch>='A'&&ch<='Z'){
				bigCounte++;
			}else if(ch>='a'&&ch<='z'){
				smallCounte++;
			}else if(ch>='0'&&ch<='9') {
				numberCounte++;
			}
		}
		System.out.println("大写字母个数"+ bigCounte);
		System.out.println("小写字母个数"+ smallCounte);
		System.out.println("数字个数"+ numberCounte);
	}
}

上一篇:JavaSE总结


下一篇:JavaSE学习笔记(day 1)