Java0基础学习笔记day15(API,String的构造方法的地址值与直接赋值的常量池,==与equals,string的判断开头和结尾,方法获取索引,截取字符串,登录,获取字符串字符数值例子)

        1.API :Application Programming Interface 应用程序编程接口
 *     
 *     2.常用API:就是Java提供给我们使用的类,这些类将底层的实现封装了起来
 * 
 *     3.API文档:JDK API 1.6 中文版
 * 
 *     4.API的使用:
 *         1.打开API帮助文档--点击显示(左上角)
 *         2.找到索引,看到输入框
 *         3.你要学习哪个类(或者哪个接口),就在框内搜索内容
 *         4.举例:Random--看包java.lang包下的类在使用的时候不需要导包
 *         5.看类的描述Random类:此类的实例用于生成随机数的类
 *         6.看构造方法(构造方法摘要部分):用来给类创建对象,给类中的成员初始化。
 *             Random() 无参构造方法
 *             Random r = new Random();
 *         7.看成员方法(方法摘要部分):
 *             public int nextInt(int n):产生一个[0,n)范围内的随机数
 *             调用方法:看返回值类型--人家返回了什么类型,就要用什么类型去接收
 *             看方法名:通过对象名调方法的时候名字不要写错了
 *             看形式参数:人家要几个参数你就给几个参数,人家要什么数据类型的,你就给什么数据类型的参数
 *             int number = r.nextInt(100);

public class B_ScannerDemo {
	
	public static void main(String[] args) {
		System.out.println("请输入一个字符串");
		Scanner sc=new Scanner(System.in);
		String a=sc.nextLine();
		System.out.println("请输入一个整数数据:");
		int i = sc.nextInt();
		System.out.println("a:"+a);
		System.out.println("i:"+i);//若输入的不是数据,则输出会报错
	}
	
	

}


 * 5.演示:String
 *         Cxxx.java~~~Hxxxx.java

        5.1 C_StringDemo

 * String : 代表字符串类
 *         由多个字符组成的一串字符数据
 *         字符串本质是一个字符数组  String[]
 *         
 * 构造方法 :
 *         String(String original) :把字符串数据封装成字符串对象
 *         String(char[] value) :把字符数组的数据封装成字符串对象
 *         String (cahr[] value,int index,int count) :把字符数组中的一部分数据封装成字符串对象
 * 
 * 注意:字符串是一种比较特殊的引用数据类型,直接输出字符串对象输出的该对象中的数据。
 

public class C_StringDemo {
	public static void main(String[] args) {
		//方式1
//		String(String original)
		String s1= new String("hello!!");
		System.out.println("s1:"+s1);
		System.out.println("-----------");
		
		//方式2
//		String(char[] value) 
		char [] chs={'a','b','c','d','e'};
		String s2 = new String(chs);
		System.out.println("s2:"+s2);
		
		//方式3
//		String (cahr[] value,int index,int count)
		String s3 = new String(chs,0,3);  //注意:索引包括0,不包括3,即索引为0,1,2输出
		System.out.println("s3:"+s3);
		
//		方式4
		String s4 = "hello!";
		System.out.println("s4:"+s4);
		
	}

}

        5.2 D_StringDemo

通过构造方法创建的字符串对象和直接赋值方式创建的字符串有什么区别?
 *         图解:字符串的内容是存储在方法区的常量池里面的。为了方便字符串的重复使用。
 * 

public class D_StringDemo2 {

	public static void main(String[] args) {
		String s1= new String("hello");
		String s2="hello";
		System.out.println("s1:"+s1);
		System.out.println("s2:"+s2);
		System.out.println(s1==s2);//false
		String s3="hello";
		System.out.println(s2==s3);//true
		System.out.println("------------------");
		int a=190;
		int b=190;
		System.out.println(a==b);//数值一样 所以为true
		
	}
	
	
}


 *       ==:
 *        如果比较数据是:

                   基本数据类型,比较的是基本数据类型(4类8种)的值是否相同
 *                 引用数据类型,比较的是引用数据类型的地址值是否相同
 *         
 *     注意与equals的区别?

①字符串对象比较内容是否相同,

②equals 方法不能用于比较基本数据类型,如果没有对 equals 方法进行重写,则相当于“==”,比较的是引用类型的变
量所指向的对象的地址值。

③一般情况下,类会重写equals方法用来比较两个对象的内容是否相等。比如String类中的equals()是被重写了,比较的是对象的值。
 

参考:(126条消息) 详解“==”和equals的区别_equals和==的区别_爱喝皮蛋瘦肉粥的小饶的博客-CSDN博客

        5.3 E_StringDemo

* Object:类层次结构中的根类,所有的类都直接或间接地继承该类
 * 如果一个参数类型是Object,那我们这里可以传递它的任意子类对象
 * 
 * String类的判断功能
 *         boolean equals(Object obj) 在字符串比较中比较字符串内容是否相同,区分大小写
 *         boolean equalsIgnoreCase(String str)比较字符串的内容是否相同 , 忽略大小写
 *         boolean startsWith(String str) 判断字符串对象是否以指定的str开头
 *         boolean endsWith(String str)  判断字符串对象是否以指定的str结尾
 

public class E_StringDemo3 {
	
	public static void main(String[] args) {

		
		int a=10;
		int b=20;
		String s1="hello";
		String s2="hello";
		String s3="Hello";
//		equals
		System.out.println(s1.equals(a));//false 但是不会报错
//		System.out.println(b.equals(a));  //直接语法错误,执行不了
		System.out.println(s1.equals(s2));//true
		System.out.println(s1.equals(s3));//false
		System.out.println("---------------------");
		
//		equalsIgnoreCase
		System.out.println(s1.equalsIgnoreCase(s2)); //true
		System.out.println(s1.equalsIgnoreCase(s3));//true
		System.out.println("---------------------");
		
//		startsWith
		System.out.println(s1.startsWith("he"));//true
		System.out.println(s1.startsWith("ll"));//false
		System.out.println("---------------------");
		
//		endsWith
		System.out.println(s1.endsWith("lo"));//true
		System.out.println(s1.endsWith("he"));//false
		
	}
}

        5.4 F_StringDemo

 * 模拟登录,给三次机会,并提示还有几次
 * 
 * 分析:
 *         A:定义两个字符串对象,用于存储已经存在的用户名和密码
 *         B:键盘录入用户名和密码
 *         C:键盘录入的用户名和密码和已经存在的用户名和密码进行比较
 *             如果相同,则登录成功
 *             如果不同,提示登录失败,并提示还有几次机会
 * 
 * 

public class F_StringLogin {

	public static void main(String[] args) {

//		定义两个字符串对象 , 用于存储已经存在的账号和密码
			String username="admin";
			String password="admin";
			
			
			for(int i=0;i<3;i++){
//			键盘录入
			Scanner sc=new Scanner(System.in);
			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)+"次机会!");
			}
		}
	}
	
	
}

5.5 G_StringDemo

在文档内,ctrl+F便可以有查找功能
 * 
 * 
 * String 类的获取功能
 *         int length() :获取字符串的长度,也就是字符个数
 *         char charAt(int index) :获取指定索引处的字符
 *         int indexOf(String str):获取str在字符串中第一次出现的索引

            int  indexOf(s, index + s.length()); //从index+s.length()位置开始查找str第一次出现位置
 *         String substring(int start):从start开始截取字符串
 *         String substring(int start,int end):从start开始,到end结束,包括start,不包括end
 *       

补充:lastIndexOf('.') 是一个字符串方法,用于查找指定字符在字符串中最后一次出现的索引位置。在这里,我们要查找点号(.)的索引位置。     

public class G_StringGet {
	
	public static void main(String[] args) {
		//创建字符串
		String s="helloWorld";
		
		//int length
		System.out.println(s.length());  //10
		System.out.println("---------------");
		
		//char charAt(int index)----看方法名:根据索引返回字符
		System.out.println(s.charAt(0)); //索引0对应字符h
		System.out.println(s.charAt(1));//索引1对应字符e
		System.out.println("---------------");
		
		
		//int indexOf(String str)----看方法名:根据字符返回第一次出现的索引
		System.out.println(s.indexOf("ll"));//ll在字符串中的索引2开始出现
		System.out.println(s.indexOf("ld"));//ld在字符串中的索引8开始出现
		System.out.println(s.indexOf("meiyou"));  //找不到就返回-1
		System.out.println("--------------");
		
		//String substring(int start)---从索引截取
		System.out.println(s.substring(5)); //5对应索引w,从w开始截取
		System.out.println(s.substring(0)); //0对应h,从h截取
		System.out.println("--------------");
		
		//String substring(int start,int end)----包括strat不包括end
		System.out.println(s.substring(0, 3)); //截取索引0,1,2,即hel
		System.out.println(s.substring(4, 9)); //截取索引4,5,6,7,8,即oWorl
		
	}
	

}


5.6 H_StringDemo

 * 1.遍历字符串,获取字符串中的每一个字符
 *     
 * 2.统计一个字符串中的大写字母,小写字母,数字字符出现的次数(不考虑其他字符)    
 *         分析:
 *             A:键盘录入一个字符串
 *             B:定义三个统计变量,初始化值0
 *             C:遍历字符串,得到每一个字符
 *             D:对字符进行判断
 *                 例如:ch是一个字符
 *                     大写:ch>='A'&& ch<='Z'
 *                     小写:ch>='a'&& ch<='z'
 *                     数字:ch>='0'&& ch<='9'
 *            E:输出结果
 *
 * 

public class H_StringTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//4类8种 byte short int  long float double char boolean
		char a1='a';
		int a2=a1;
		char a3=65;
		System.out.println(a1);//a
		System.out.println(a2);//97
		System.out.println(a3);//A
		System.out.println("----------------");
//		创建字符串对象
		String a="abcde";
		
//		原始做法
		System.out.println(a.charAt(0));
		System.out.println(a.charAt(1));
		System.out.println(a.charAt(2));
		System.out.println(a.charAt(3));
		System.out.println(a.charAt(4));
		System.out.println("---------------");
		
//		for循环改进
		for(int i=0;i<a.length();i++){
			System.out.println(a.charAt(i));
		}
		System.out.println("---------------");
		
//      练习2
		
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String s=sc.nextLine();
		
		int bigCount=0;
		int smallCount=0;
		int numberCount=0;
		
		for(int i=0;i<s.length();i++){
			char ch=s.charAt(i);
			if(ch>='a' && ch<='z'){
				smallCount++;
			}
			else if(ch>='A' && ch<='Z'){
				bigCount++;
			}
			else if(ch>='0' && ch<='9'){
				numberCount++;
			}
			else {
				System.out.println("字符"+ch+"为非法字符");
			}
		}
		System.out.println("大写字符个数:"+bigCount);
		System.out.println("小写字符个数:"+smallCount);
		System.out.println("数字字符个数:"+numberCount);
		
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值