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