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); } }