博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA语言基础-面向对象(开发工具、API、String)
阅读量:6378 次
发布时间:2019-06-23

本文共 26773 字,大约阅读时间需要 89 分钟。

hot3.png

###11.01_Java开发工具(常见开发工具介绍)(了解)

  • A:操作系统自带的记事本软件
  • B:高级记事本软件
  • C:集成开发环境 IDE
    • (Integrated Development Environment)
  • D:Eclipse和MyEclipse的区别
    • a:Eclipse是一种可扩展的开放源代码的IDE。
    • b:Eclipse的特点描述
      • 免费
      • 纯Java语言编写
      • 免安装
      • 扩展性强
    • c:MyEclipse
      • 在Eclipse基础上追加的功能性插件,对插件收费
      • 在WEB开发中提供强大的系统架构平台
  • E:下载
    • org是非盈利团体
  • F:安装
    • 绿色版 解压就可以使用(Eclipse)
    • 安装版 双击运行,一路next即可(JDK)
  • G:卸载
    • 绿色版 直接删除文件夹即可
    • 安装版 专业卸载软件或者控制面板添加删除程序

###11.02_Java开发工具(Eclipse中HelloWorld案例以及汉化)(了解)

  • A:选择工作空间
    • 工作空间 其实就是我们写的源代码所在的目录
  • B:用Eclipse来完成一个HelloWorld案例
    • 代码以项目为基本单位
    • 创建项目
    • 创建包
    • 创建类
    • 编写代码
  • C:编译和运行
  • D:Eclipse的汉化
    • 从Eclipse3.5开始,安装目录下就多了一个dropins目录,只要将插件解压后放到到该目录即可。
    • 同理,这种方式卸载插件也是特别的方便,推荐这种方式
  • E:语法检查提示
    • 红色波浪线
      • 必须处理,否则编译通不过
    • 黄色波浪线
      • 可以不搭理他

###11.03_Java开发工具(Eclipse的视窗和视图概述)(了解)

  • A:视窗 每一个基本的窗体被称为视窗
    • PackageExplorer 显示项目结构,包,类,及资源
    • Outline 显示类的结构,方便查找,识别,修改
    • Console 程序运行的结果在该窗口显示
    • Hierarchy 显示Java继承层次结构,选中类后F4
  • B:视图 是由某些视窗的组合而成的
    • Java视图
    • Debug视图

###11.04_Java开发工具(Eclipse工作空间的基本配置)(掌握)

  • A:程序的编译和运行的环境配置(一般不改)
    • window -- Preferences -- Java
    • 编译环境:Compiler 默认选中的就是最高版本。
    • 运行环境:Installed JREs 默认会找你安装的那个JDK。建议配置了Java的环境变量。
    • 问题:
      • 低编译,高运行。可以。
      • 高编译,低运行。不可以。
      • 建议,编译和运行的版本一致。
  • B:如何去掉默认注释?
    • window -- Preferences -- Java -- Code Style -- Code Templates
    • 选择你不想要的内容,通过右边Edit编辑。
    • 注意:请只删除注释部分,不是注释部分的不要删除。
  • C:行号的显示和隐藏
    • 显示:在代码区域的最左边的空白区域,右键 -- Show Line Numbers即可。
    • 隐藏:把上面的动作再做一次。
  • D:字体大小及颜色
    • a:Java代码区域的字体大小和颜色:
      • window -- Preferences -- General -- Appearance -- Colors And Fonts --Java修改 -- Java Edit Text Font
    • b:控制台
      • window -- Preferences -- General -- Appearance -- Colors And Fonts -- Debug -- Console font
    • c:其他文件
      • window -- Preferences -- General -- Appearance -- Colors And Fonts -- Basic -- Text Font
  • E:窗体给弄乱了,怎么办?
    • window -- Reset Perspective
  • F:控制台找不到了,怎么办?
    • Window--Show View—Console
  • G:取消悬浮提示
    • window -- Preferences -- Java--Editor--Hovers。右边将Combined Hover勾去掉。
    • 这样代码的悬浮框就不会自动出现了。如果想看提示,将光标悬浮在代码上,按F2即可。

###11.05_Java开发工具(Eclipse中内容辅助键的使用)(掌握)

  • A:Alt+/ 起提示作用
  • B:main+alt+/,syso+alt+/,给出其他提示
  • C:补充输出语句,选中需要输出的部分,alt+/选择最后一项即可
  • C:定义自己的alt + /
    • windows--perference-Java-Editor-Templates--New

###11.06_Java开发工具(Eclipse中快捷键的使用)(掌握)

  • A:新建 ctrl + n
  • B:格式化 ctrl+shift+f
  • C:导入包 ctrl+shift+o
  • D:注释 ctrl+/,ctrl+shift+/,ctrl+shift+\
  • E:代码上下移动 选中代码alt+上/下箭头
  • F:查看源码 选中类名(F3或者Ctrl+鼠标点击)
  • G:查找具体的类 ctrl + shift + t
  • H:查找具体类的具体方法 ctrl + o
  • I:给建议 ctrl+1,根据右边生成左边的数据类型,生成方法
  • J:删除代码 ctrl + d
  • K:抽取方法alt + shift + m
  • L:改名alt + shift + r

###11.07_Java开发工具(Eclipse中如何提高开发效率)(掌握)

  • alt + shift + s
  • A:自动生成构造方法
  • B:自动生成get/set方法

###11.08_Java开发工具(Eclipse中一个标准学生类及其测试)(掌握)

  • A:案例演示
    • 用Eclipse实现标准学生类及其测试

###11.09_Java开发工具(Eclipse中接口抽象类具体类代码体现)(掌握)

  • A:案例演示
    • 用Eclipse实现接口抽象类具体类代码

###11.10_Java开发工具(Eclipse中如何生成jar包并导入到项目中)(了解)

  • A:jar是什么?
    • jar是多个class文件的压缩包。
  • B:jar有什么用?
    • 用别人写好的东西
  • C:打jar包
    • 选中项目--右键--Export--Java--Jar--自己指定一个路径和一个名称--Finish
  • D:导入jar包
    • 复制到项目路径下并添加至构建路径。

###11.11_Java开发工具(Eclipse中如何删除项目和导入项目)(掌握)

  • A:删除项目
    • 选中项目 – 右键 – 删除
      • 从项目区域中删除
      • 从硬盘上删除
  • B:导入项目
    • 在项目区域右键找到import
    • 找到General,展开,并找到
    • Existing Projects into Workspace
    • 点击next,然后选择你要导入的项目
    • 注意:这里选择的是项目名称

###11.12_Java开发工具(Eclipse中断点调试的基本使用)(了解)

  • A:Debug的作用
    • 调试程序
    • 查看程序执行流程
  • B:如何查看程序执行流程
    • 什么是断点:

      • 就是一个标记,从哪里开始。
    • 如何设置断点:

      • 你想看哪里的程序,你就在那个有效程序的左边双击即可。
    • 在哪里设置断点:

      • 哪里不会点哪里。
      • 目前:我们就在每个方法的第一条有效语句上都加。
    • 如何运行设置断点后的程序:

      • 右键 -- Debug as -- Java Application
    • 看哪些地方:

      • Debug:断点测试的地方
        • 在这个地方,记住F6,或者点击也可以。一次看一行的执行过程。
      • Variables:查看程序的变量变化
      • ForDemo:被查看的源文件
      • Console:控制台
    • 如何去断点:

      • a:再次双击即可
      • b:找到Debug视图,Variables界面,找到Breakpoints,并点击,然后看到所有的断点,最后点击那个双叉。

###11.13_Java开发工具(Eclipse查看Java中参数传递问题)(了解)

  • A:断点演示
    • 断点查看Java中参数传递问题

###11.14_常见对象(API概述)(了解)

  • A:API(Application Programming Interface)
    • 应用程序编程接口
  • B:Java API
    • 就是Java提供给我们使用的类,这些类将底层的实现封装了起来,
    • 我们不需要关心这些类是如何实现的,只需要学习这些类如何使用。

###11.15_常见对象(Object类的概述)(了解)

  • A:Object类概述
    • 类层次结构的根类
    • 所有类都直接或者间接的继承自该类
  • B:构造方法
    • public Object()
    • 回想面向对象中为什么说:
    • 子类的构造方法默认访问的是父类的无参构造方法

###11.16_常见对象(Object类的hashCode()方法)(了解)

  • A:案例演示
    • public int hashCode()
    • a:返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
    • b:不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。
package com.heima.object;import com.heima.bean.Student;public class Demo1_HashCode {	public static void main(String[] args) {		Object object = new Object();		int hashCode = object.hashCode();		System.out.println(hashCode);		Student s1 = new Student("ÕÅÈý", 23);		Student s2 = new Student("ÀîËÄ", 24);				System.out.println(s1.hashCode());		System.out.println(s2.hashCode());	}}

###11.17_常见对象(Object类的getClass()方法)(在反射的时候掌握)

  • A:案例演示
    • public final Class getClass()
    • a:返回此 Object 的运行时类。
    • b:可以通过Class类中的一个方法,获取对象的真实类的全名称。
      • public String getName()
package com.heima.object;import com.heima.bean.Student;public class Demo2_GetClass {	public static void main(String[] args) {		Student s = new Student("ÕÅÈý", 23);		// Class clazz = new Class();		Class clazz = s.getClass();		String name = clazz.getName();		System.out.println(name);	}}

###11.18_常见对象(Object类的toString()方法)(掌握)

  • A:案例演示
    • public String toString()
    • a:返回该对象的字符串表示。
public Stirng toString() {		return name + "," + age;	}* b:它的值等于: 	* getClass().getName() + "@" + Integer.toHexString(hashCode()) * c:由于默认情况下的数据对我们来说没有意义,一般建议重写该方法。
  • B:最终版
    • 自动生成
package com.heima.object;import com.heima.bean.Student;public class Demo3_ToString {	/**	 * @param args	 * com.heima.bean.Student@bcda2d	 * public Stirng toString() {			return  getClass().getName() + "@" + Integer.toHexString(hashCode()) 		}		左边 :类名		中间:@		右边:hashCode的十六进制表现形式		这么写没有什么实际意义。		toString方法的作用:可以更方便的显示属性值。		getXxx方法是为了获取值,可以显示也可以赋值,或者其他操作。	 */	public static void main(String[] args) {		Student s = new Student("张三", 23);//		String str = s.toString();//		System.out.println(str);		System.out.println(s.toString());		System.out.println(s);		System.out.println("我的姓名是:" + s.getName() + ",我的年龄是:"+ s.getAge());	}}

###11.19_常见对象(Object类的equals()方法)(掌握)

  • A:案例演示
    • a:指示其他某个对象是否与此对象“相等”。
    • b:默认情况下比较的是对象的引用是否相同。
    • c:由于比较对象的引用没有意义,一般建议重写该方法。
package com.heima.object;import com.heima.bean.Student;public class Demo4_Equals {	/**	 * @param args	 * equals方法,比较两个对象是否相等	 * public boolean equals(Object obj){	 *    return (this == obj);	 * }	 * 	 * Object中的equals方法是比较对象的地址值,没有什么意义,我们 需要重写它。	 * 因为在开发中我们通常比较的是对象中的属性值,我们认为 相同属性是同一个对象,这样我们就需要重写equals方法。		   ==和equals方法的区别	       共同点:都可以做比较,返回值都是boolean	        区别:1,==是比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值	 	    2,equals方法只能比较引用数据类型,equals方法在没有重写之前,比较的是地址值,底层依赖的是==号,但是比较地址值是没	 	               有意义的,我们需要重写equals方法比较对象中的属性值。	 	    	 */	public static void main(String[] args) {		Student s1 =  new Student("张三", 23);		Student s2 =  new Student("张三", 23);		boolean b = s1.equals(s2);   			//比较2个对象是否相等		System.out.println(s1 == s2);		System.out.println(b);					//重写之后比较的是对象中的属性值	}}

###11.20_常见对象(==号和equals方法的区别)(掌握)

  • ==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
  • equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性

###12.01_常见对象(Scanner的概述和方法介绍)(掌握)

  • A:Scanner的概述

  • B:Scanner的构造方法原理

    • Scanner(InputStream source)
    • System类下有一个静态的字段:
      • public static final InputStream in; 标准的输入流,对应着键盘录入。
  • C:一般方法

    • hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx
    • nextXxx() 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分隔符
package com.heima.scanner;import java.util.Scanner;public class Demo1_Scanner {	/**	 * @param args	 */	public static void main(String[] args) {		Scanner sc = new Scanner(System.in);				//键盘录入		//int i = sc.nextInt();								//键盘录入整数存储在i中		//System.out.println(i);		if(sc.hasNextInt()) {								//判断键盘录入的是否是int类型的数据			int i = sc.nextInt();							//键盘录入的数据存储在i中			System.out.println(i);		}else {			System.out.println("输入的类型错误");		}			}}

###12.02_常见对象(Scanner获取数据出现的小问题及解决方案)(掌握)

  • A:两个常用的方法:
    • public int nextInt():获取一个int类型的值
    • public String nextLine():获取一个String类型的值
  • B:案例演示
    • a:先演示获取多个int值,多个String值的情况
    • b:再演示先获取int值,然后获取String值出现问题
    • c:问题解决方案
      • 第一种:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。
      • 第二种:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。(后面讲)
package com.heima.scanner;import java.util.Scanner;public class Demo2_Scanner {	/**	 	* A:两个常用的方法:			* public int nextInt():获取一个int类型的值			* public String nextLine():获取一个String类型的值		* B:案例演示			* a:先演示获取多个int值,多个String值的情况			* b:再演示先获取int值,然后获取String值出现问题			* c:问题解决方案				* 第一种:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。				* 第二种:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。(后面讲)	 */	public static void main(String[] args) {		Scanner sc = new Scanner(System.in);		/*System.out.println("请输入第一个整数:");		int i = sc.nextInt();		System.out.println("请输入第二个整数:");		int j = sc.nextInt();		System.out.println("i = " + i + ", j = " + j);*/				/*System.out.println("请输入第一个字符串:");		String line1 = sc.nextLine();		System.out.println("请输入第二个字符串:");		String line2 = sc.nextLine();		System.out.println("line1 = " + line1 + ", line2 = " + line2 );*/				/*		 * nextInt()是键盘录入整数的方法,当我们录入10的时候		 * 其实在键盘上录入的是10和\r\n,nextInt()方法只获取10就结束了		 * nextLine()是键盘录入字符串的方法,可以接收任意类型,但是他凭什么能获取一行呢?		 * 通过\r\n,只要遇到\r\n就证明一行结束		 */		/*System.out.println("请输入第一个整数:");		int i = sc.nextInt();		System.out.println("请输入第二个字符串:");		String line2 = sc.nextLine();		//System.out.println("i = " + i + ", line2 = " + line2);		System.out.println(i);		System.out.print("11111111111");		System.out.print(line2);		System.out.println("2222222222222");*/				/*		 * 解决方案		 * 1,创建两次对象,但是浪费空间		 * 2,键盘录入的都是字符串,都用nextLine方法,后面我们会学习讲整数字符串转换成整数的方法		 */		int i = sc.nextInt();		Scanner sc2 = new Scanner(System.in);		String line = sc2.nextLine();		System.out.println(i);		System.out.println(line);	}}

###12.03_常见对象(String类的概述)(掌握)

  • A:String类的概述
    • 通过JDK提供的API,查看String类的说明

    • 可以看到这样的两句话。

      • a:字符串字面值"abc"也可以看成是一个字符串对象。
      • b:字符串是常量,一旦被赋值,就不能被改变。
package com.heima.string;public class Demo1_String {	/**	 * a:字符串字面值"abc"也可以看成是一个字符串对象。	 * b:字符串是常量,一旦被赋值,就不能被改变。	 */	public static void main(String[] args) {		//Person p = new Person();		String str = "abc";					//"abc"可以看成一个字符串对象		str = "def";						//当把"def"赋值给str,原来的"abc"就变成了垃圾		System.out.println(str);			//String类重写了toString方法返回的是该对象本身			}}

###12.04_常见对象(String类的构造方法)(掌握)

  • A:常见构造方法
    • public String():空构造
    • public String(byte[] bytes):把字节数组转成字符串
    • public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
    • public String(char[] value):把字符数组转成字符串
    • public String(char[] value,int index,int count):把字符数组的一部分转成字符串
    • public String(String original):把字符串常量值转成字符串
  • B:案例演示
    • 演示String类的常见构造方法
package com.heima.string;public class Demo2_StringCon {	/**	 	* public String():空构造		* public String(byte[] bytes):把字节数组转成字符串		* public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串		* public String(char[] value):把字符数组转成字符串		* public String(char[] value,int index,int count):把字符数组的一部分转成字符串		* public String(String original):把字符串常量值转成字符串	 */	public static void main(String[] args) {		String s1 = new String();		System.out.println(s1);				byte[] arr1 = {97,98,99};				String s2 = new String(arr1);			//解码,将计算机读的懂的转换成我们读的懂		System.out.println(s2);				byte[] arr2 = {97,98,99,100,101,102};		String s3 = new String(arr2,2,3);		//将arr2字节数组从2索引开始转换3个		System.out.println(s3);				char[] arr3 = {'a','b','c','d','e'};	//将字符数组转换成字符串		String s4 = new String(arr3);		System.out.println(s4);				String s5 = new String(arr3,1,3);		//将arr3字符数组,从1索引开始转换3个		System.out.println(s5);				String s6 = new String("heima");		System.out.println(s6);	}}

###12.05_常见对象(String类的常见面试题)(掌握)

  • 1.判断定义为String类型的s1和s2是否相等
    • String s1 = "abc";
    • String s2 = "abc";
    • System.out.println(s1 == s2);
    • System.out.println(s1.equals(s2));
    • 0f4cb1ce1891e14d86ffa0d0ab06e9769e9.jpg
  • 2.下面这句话在内存中创建了几个对象?
    • String s1 = new String("abc");
    • 891ed900ef1e555fd2ffb0130b18eb23482.jpg
  • 3.判断定义为String类型的s1和s2是否相等
    • String s1 = new String("abc");
    • String s2 = "abc";
    • System.out.println(s1 == s2);
    • System.out.println(s1.equals(s2));
  • 4.判断定义为String类型的s1和s2是否相等
    • String s1 = "a" + "b" + "c";
    • String s2 = "abc";
    • System.out.println(s1 == s2);
    • System.out.println(s1.equals(s2));
    • 2c2fa056291147aae67f6c5f9e9b9c61815.jpg
  • 5.判断定义为String类型的s1和s2是否相等
    • String s1 = "ab";
    • String s2 = "abc";
    • String s3 = s1 + "c";
    • System.out.println(s3 == s2);
    • System.out.println(s3.equals(s2));
package com.heima.string;public class Demo3_String {	/**	 * * 1.判断定义为String类型的s1和s2是否相等			* String s1 = "abc";			* String s2 = "abc";			* System.out.println(s1 == s2); 								* System.out.println(s1.equals(s2)); 				* 2.下面这句话在内存中创建了几个对象?			* String s1 = new String("abc");					* 3.判断定义为String类型的s1和s2是否相等			* String s1 = new String("abc");						* String s2 = "abc";			* System.out.println(s1 == s2); ?						* System.out.println(s1.equals(s2)); ?			* 4.判断定义为String类型的s1和s2是否相等			* String s1 = "a" + "b" + "c";			* String s2 = "abc";			* System.out.println(s1 == s2); ?						* System.out.println(s1.equals(s2)); ?			* 5.判断定义为String类型的s1和s2是否相等			* String s1 = "ab";			* String s2 = "abc";			* String s3 = s1 + "c";			* System.out.println(s3 == s2);			* System.out.println(s3.equals(s2)); ?				 */	public static void main(String[] args) {		//demo1();		//demo2();		//demo3();		//demo4();		String s1 = "ab";		String s2 = "abc";		String s3 = s1 + "c";		System.out.println(s3 == s2);		System.out.println(s3.equals(s2)); 		//true	}	private static void demo4() {		//byte b = 3 + 4;						//在编译时就变成7,把7赋值给b,常量优化机制		String s1 = "a" + "b" + "c";		String s2 = "abc";		System.out.println(s1 == s2); 			//true,java中有常量优化机制			System.out.println(s1.equals(s2)); 		//true	}	private static void demo3() {		String s1 = new String("abc");			//记录的是堆内存对象的地址值				String s2 = "abc";						//记录的是常量池中的地址值		System.out.println(s1 == s2); 			//false		System.out.println(s1.equals(s2)); 		//true	}	private static void demo2() {		//创建几个对象		//创建两个对象,一个在常量池中,一个在堆内存中		String s1 = new String("abc");				System.out.println(s1);	}	private static void demo1() {				//常量池中没有这个字符串对象,就创建一个,如果有直接用即可		String s1 = "abc";		String s2 = "abc";		System.out.println(s1 == s2); 			//true			System.out.println(s1.equals(s2)); 		//true	}}

###12.06_常见对象(String类的判断功能)(掌握)

  • A:String类的判断功能
    • boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
    • boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
    • boolean contains(String str):判断大字符串中是否包含小字符串
    • boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
    • boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
    • boolean isEmpty():判断字符串是否为空。
package com.heima.string;public class Demo4_StringMethod {	/**	 	* boolean equals(Object obj):比较字符串的内容是否相同,区分大小写		* boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写		* boolean contains(String str):判断大字符串中是否包含小字符串		* boolean startsWith(String str):判断字符串是否以某个指定的字符串开头		* boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾		* boolean isEmpty():判断字符串是否为空。		* 		* ""和null的区别		* ""是字符串常量,同时也是一个String类的对象,既然是对象当然可以调用String类中的方法		* null是空常量,不能调用任何的方法,否则会出现空指针异常,null常量可以给任意的引用数据类型赋值	 */	public static void main(String[] args) {		//demo1();		//demo2();		String s1 = "heima";		String s2 = "";		String s3 = null;				System.out.println(s1.isEmpty());		System.out.println(s2.isEmpty());		System.out.println(s3.isEmpty());	//java.lang.NullPointerException	}	private static void demo2() {		String s1 = "我爱heima,哈哈";		String s2 = "heima";		String s3 = "baima";		String s4 = "我爱";		String s5 = "哈哈";				System.out.println(s1.contains(s2));		//判断是否包含传入的字符串		System.out.println(s1.contains(s3));				System.out.println("------------------");		System.out.println(s1.startsWith(s4));		//判断是否以传入的字符串开头		System.out.println(s1.startsWith(s5));				System.out.println("------------------");		System.out.println(s1.endsWith(s4));		//判断是否以传入的字符串结尾		System.out.println(s1.endsWith(s5));	}	private static void demo1() {		String s1 = "heima";		String s2 = "heima";		String s3 = "HeiMa";				System.out.println(s1.equals(s2));		//true		System.out.println(s2.equals(s3));		//false				System.out.println("---------------");				System.out.println(s1.equalsIgnoreCase(s2));			System.out.println(s1.equalsIgnoreCase(s3)); 	//不区分大小写	}}

###12.07_常见对象(模拟用户登录)(掌握)

  • A:案例演示
    • 需求:模拟登录,给三次机会,并提示还有几次。
    • 用户名和密码都是admin
package com.heima.test;import java.util.Scanner;public class Test1 {	/**	 * * A:案例演示		* 需求:模拟登录,给三次机会,并提示还有几次。		* 用户名和密码都是admin		* 分析:		* 1,模拟登录,需要键盘录入,Scanner		* 2,给三次机会,需要循环,for		* 3,并提示有几次,需要判断,if	 */	public static void main(String[] args) {		Scanner sc = new Scanner(System.in);		//创建键盘录入对象				for(int i = 0; i < 3; i++) {			System.out.println("请输入用户名:");			String userName = sc.nextLine();			//将键盘录入的用户名存储在userName中			System.out.println("请输入密码:");			String password = sc.nextLine();			//将键盘录入的密码存储在password中						//如果是字符串常量和字符串变量比较,通常都是字符串常量调用方法,将变量当作参数传递,防止空指针异常			if("admin".equals(userName) && "admin".equals(password)) {				System.out.println("欢迎" + userName + "登录");				break;									//跳出循环			}else {				if(i == 2) {					System.out.println("您的错误次数已到,请明天再来吧");				}else {					System.out.println("录入错误,您还有" + (2-i) + "次机会");				}			}				}	}}

###12.08_常见对象(String类的获取功能)(掌握)

  • A:String类的获取功能
    • int length():获取字符串的长度。
    • char charAt(int index):获取指定索引位置的字符
    • int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
    • int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
    • int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
    • int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
    • lastIndexOf
    • String substring(int start):从指定位置开始截取字符串,默认到末尾。
    • String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。
package com.heima.string;public class Demo5_StringMethod {	/**	 * * int length():获取字符串的长度。	* char charAt(int index):获取指定索引位置的字符	* int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。	* int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。	* int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。	* int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。	* lastIndexOf	* String substring(int start):从指定位置开始截取字符串,默认到末尾。	* String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。	 */	public static void main(String[] args) {		//demo1();		//demo2();		//demo3();		//demo4();		String s = "woaiheima";		s.substring(4);									//subString会产生一个新额字符串,需要将新的字符串记录		System.out.println(s);	}	private static void demo4() {		String s1 = "heimawudi";		String s2 = s1.substring(5);		System.out.println(s2);				String s3 = s1.substring(0, 5);					//包含头,不包含尾,左闭右开		System.out.println(s3);	}	private static void demo3() {		String s1 = "woaiheima";		int index1 = s1.indexOf('a', 3);					//从指定位置开始向后找		System.out.println(index1);				int index2 = s1.lastIndexOf('a');					//从后向前找,第一次出现的字符		System.out.println(index2);				int index3 = s1.lastIndexOf('a', 7);				//从指定位置向前找		System.out.println(index3);	}	private static void demo2() {		String s1 = "heima";		int index = s1.indexOf('e');						//参数接收的是int类型的,传递char类型的会自动提升		System.out.println(index);				int index2 = s1.indexOf('z');						//如果不存在返回就是-1		System.out.println(index2);				int index3 = s1.indexOf("ma");						//获取字符串中第一个字符出现的位置		System.out.println(index3);				int index4 = s1.indexOf("ia");		System.out.println(index4);	}	private static void demo1() {		//int[] arr = {11,22,33};		//System.out.println(arr.length);					//数组中的length是属性		String s1 = "heima";		System.out.println(s1.length());					//length()是一个方法,获取的是每一个字符的个数		String s2 = "你要减肥,造吗?";		System.out.println(s2.length());				char c = s2.charAt(5);								//根据索引获取对应位置的字符		System.out.println(c);		char c2 = s2.charAt(10);							//StringIndexOutOfBoundsException字符串索引越界异常		System.out.println(c2);	}}

###12.09_常见对象(字符串的遍历)(掌握)

  • A:案例演示
    • 需求:遍历字符串
package com.heima.test;public class Test2 {	/**	 * * A:案例演示	 * 需求:遍历字符串	 */	public static void main(String[] args) {		String s = "heima";				for(int i = 0; i < s.length(); i++) {			//通过for循环获取到字符串中每个字符的索引			/*char c = s.charAt(i);			System.out.println(c);*/			System.out.println(s.charAt(i));			//通过索引获取每一个字符			}	}}

###12.10_常见对象(统计不同类型字符个数)(掌握)

  • A:案例演示
    • 需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数。
    • ABCDEabcd123456!@#$%^
package com.heima.test;public class Test3 {	/**	 * A:案例演示		* 需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数。		* ABCDEabcd123456!@#$%^		* 分析:字符串是有字符组成的,而字符的值都是有范围的,通过范围来判断是否包含该字符		* 如果包含就让计数器变量自增	 */	public static void main(String[] args) {		String s = "ABCDEabcd123456!@#$%^";		int big = 0;		int small = 0;		int num = 0;		int other = 0;		//1,获取每一个字符,通过for循环遍历		for(int i = 0; i < s.length(); i++) {			char c = s.charAt(i);						//通过索引获取每一个字符			//2,判断字符是否在这个范围内			if(c >= 'A' && c <= 'Z') {				big++;									//如果满足是大写字母,就让其对应的变量自增			}else if(c >= 'a' && c <= 'z') {				small++;			}else if(c >= '0' && c <= '9') {				num++;			}else {				other++;			}		}				//3,打印每一个计数器的结果		System.out.println(s + "中大写字母有:" + big + "个,小写字母有:" + small + "个,数字字符:" 		+ num + "个,其他字符:" + other + "个");	}}

###12.11_常见对象(String类的转换功能)(掌握)

  • A:String的转换功能:
    • byte[] getBytes():把字符串转换为字节数组。

    • char[] toCharArray():把字符串转换为字符数组。

    • static String valueOf(char[] chs):把字符数组转成字符串。

    • static String valueOf(int i):把int类型的数据转成字符串。

      • 注意:String类的valueOf方法可以把任意类型的数据转成字符串
    • String toLowerCase():把字符串转成小写。(了解)

    • String toUpperCase():把字符串转成大写。

    • String concat(String str):把字符串拼接。

package com.heima.string;import com.heima.bean.Person;public class Demo6_StringMethod {	/**	 * * byte[] getBytes():把字符串转换为字节数组。		* char[] toCharArray():把字符串转换为字符数组。		* static String valueOf(char[] chs):把字符数组转成字符串。		* static String valueOf(int i):把int类型的数据转成字符串。			* 注意:String类的valueOf方法可以把任意类型的数据转成字符串。				* String toLowerCase():把字符串转成小写。(了解)		* String toUpperCase():把字符串转成大写。		* String concat(String str):把字符串拼接。	 */	public static void main(String[] args) {		//demo1();		//demo2();		//demo3();		String s1 = "heiMA";		String s2 = "chengxuYUAN";		String s3 = s1.toLowerCase();		String s4 = s2.toUpperCase();				System.out.println(s3);		System.out.println(s4);				System.out.println(s3 + s4);				//用+拼接字符串更强大,可以用字符串与任意类型相加		System.out.println(s3.concat(s4));			//concat方法调用的和传入的都必须是字符串	}	private static void demo3() {		char[] arr = {'a','b','c'};		String s = String.valueOf(arr);			//底层是由String类的构造方法完成的		System.out.println(s);				String s2 = String.valueOf(100);		//将100转换为字符串		System.out.println(s2 + 100);				Person p1 = new Person("张三", 23);		System.out.println(p1);		String s3 = String.valueOf(p1);			//调用的是对象的toString方法		System.out.println(s3);	}	private static void demo2() {		String s = "heima";		char[] arr = s.toCharArray();			//将字符串转换为字符数组				for (int i = 0; i < arr.length; i++) {			System.out.print(arr[i] + " ");		}	}	private static void demo1() {		String s1 = "abc";		byte[] arr = s1.getBytes();		for (int i = 0; i < arr.length; i++) {			//System.out.print(arr[i] + " ");		}				String s2 = "你好你好";		byte[] arr2 = s2.getBytes();				//通过gbk码表将字符串转换成字节数组		for (int i = 0; i < arr2.length; i++) {		//编码:把我们看的懂转换为计算机看的懂得			//System.out.print(arr2[i] + " ");		//gbk码表一个中文代表两个字节		}											//gbk码表特点,中文的第一个字节肯定是负数				String s3 = "琲";		byte[] arr3 = s3.getBytes();		for (int i = 0; i < arr3.length; i++) {			System.out.print(arr3[i] + " ");		}	}}

###12.12_常见对象(按要求转换字符)(链式编程掌握)

  • A:案例演示
    • 需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
package com.heima.test;public class Test4 {	/**	 * * A:案例演示	 * 需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)	 * 链式编程:只要保证每次调用完方法返回的是对象,就可以继续调用	 */	public static void main(String[] args) {		String s = "woaiHEImaniaima";		String s2 = s.substring(0, 1).toUpperCase().concat(s.substring(1).toLowerCase());		System.out.println(s2);	}}

###12.13_常见对象(把数组转成字符串)

  • A:案例演示
    • 需求:把数组中的数据按照指定个格式拼接成一个字符串
      • 举例:
        • int[] arr = {1,2,3};
      • 输出结果:
        • "[1, 2, 3]" ###12.14_常见对象(String类的其他功能)
  • package com.heima.test;public class Test5 {	/**	 * * A:案例演示		* 需求:把数组中的数据按照指定个格式拼接成一个字符串			* 举例:				* int[] arr = {1,2,3};				* 输出结果:				* "[1, 2, 3]"				* 		分析:		1,需要定义一个字符串"["		2,遍历数组获取每一个元素		3,用字符串与数组中的元素进行拼接	 */	public static void main(String[] args) {		int[] arr = {1,2,3};		String s = "[";							//定义一个字符串用来与数组中元素拼接				for (int i = 0; i < arr.length; i++) {	//{1,2,3}			if(i == arr.length - 1) {				s = s + arr[i] + "]";			//[1, 2, 3]			}else {				s = s + arr[i] + ", ";			//[1, 2, 			}		}				System.out.println(s);	}}

     

  • A:String的替换功能及案例演示
    • String replace(char old,char new)
    • String replace(String old,String new)
  • B:String的去除字符串两空格及案例演示
    • String trim()
  • C:String的按字典顺序比较两个字符串及案例演示
    • int compareTo(String str)(暂时不用掌握)
    • int compareToIgnoreCase(String str)(了解)
package com.heima.string;public class Demo7_StringMethod {	/**	 * * A:String的替换功能及案例演示			* String replace(char old,char new)			* String replace(String old,String new)		* B:String的去除字符串两空格及案例演示			* String trim()		* C:String的按字典顺序比较两个字符串及案例演示			* int compareTo(String str)(暂时不用掌握)			* int compareToIgnoreCase(String str)(了解)			 			* 	 */	public static void main(String[] args) {		//demo1();		//demo2();				String s1 = "a";		String s2 = "aaaa";				int num = s1.compareTo(s2);				//按照码表值比较		System.out.println(num);				String s3 = "黑";		String s4 = "马";		int num2 = s3.compareTo(s4);		System.out.println('黑' + 0);			//查找的是unicode码表值		System.out.println('马' + 0);		System.out.println(num2);				String s5 = "heima";		String s6 = "HEIMA";		int num3 = s5.compareTo(s6);		System.out.println(num3);				int num4 = s5.compareToIgnoreCase(s6);		System.out.println(num4);				/*		 * public int compare(String s1, String s2) {            int n1 = s1.length();            int n2 = s2.length();            int min = Math.min(n1, n2);            for (int i = 0; i < min; i++) {                char c1 = s1.charAt(i);                char c2 = s2.charAt(i);                if (c1 != c2) {                    c1 = Character.toUpperCase(c1);						//将c1字符转换成大写                    c2 = Character.toUpperCase(c2);						//将c2字符转换成大写                    if (c1 != c2) {                        c1 = Character.toLowerCase(c1);					//将c1字符转换成小写                        c2 = Character.toLowerCase(c2);					//将c2字符转换成小写                        if (c1 != c2) {                            // No overflow because of numeric promotion                            return c1 - c2;                        }                    }                }            }            return n1 - n2;		 */	}	private static void demo2() {		String s = "   hei   ma   ";		String s2 = s.trim();		System.out.println(s2);	}	private static void demo1() {		String s = "heima";		String s2 = s.replace('i', 'o');			//用o替换i		System.out.println(s2);				String s3 = s.replace('z', 'o');			//z不存在,保留原字符不改变		System.out.println(s3);				String s4 = s.replace("ei", "ao");		System.out.println(s4);	}}

###12.15_常见对象(字符串反转)

  • A:案例演示
    • 需求:把字符串反转
      • 举例:键盘录入"abc"
      • 输出结果:"cba"
package com.heima.test;import java.util.Scanner;public class Test6 {	/**	 * * A:案例演示		* 需求:把字符串反转			* 举例:键盘录入"abc"					* 输出结果:"cba"		*分析:		*1,通过键盘录入获取字符串Scanner		*2,将字符串转换成字符数组		*3,倒着遍历字符数组,并再次拼接成字符串		*4,打印 	 */	public static void main(String[] args) {		Scanner sc = new Scanner(System.in);				//创建键盘录入对象		System.out.println("请输入一个字符串:");		String line = sc.nextLine();						//将键盘录入的字符串存储在line中				char[] arr = line.toCharArray();					//将字符串转换为字符数组				String s = "";		for(int i = arr.length-1; i >= 0; i--) {			//倒着遍历字符数组			s = s + arr[i];									//拼接成字符串		}				System.out.println(s);	}}

###12.16_常见对象(在大串中查找小串出现的次数思路图解)

  • A:画图演示
    • 需求:统计大串中小串出现的次数
    • 这里的大串和小串可以自己根据情况给出

###12.17_常见对象(在大串中查找小串出现的次数代码实现)

  • A:案例演示
    • 统计大串中小串出现的次数
package com.heima.test;public class Test7 {	/**	 * * A:画图演示	 * 需求:统计大串中小串出现的次数	 * 这里的大串和小串可以自己根据情况给出	 * 	 */	public static void main(String[] args) {		//定义大串		String max = "woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma";		//定义小串		String min = "heima";				//定义计数器变量		int count = 0;		//定义索引		int index = 0;		//定义循环,判断小串是否在大串中出现		while((index = max.indexOf(min)) != -1) {			count++;									//计数器自增			max = max.substring(index + min.length());		}				System.out.println(count);	}}

 

转载于:https://my.oschina.net/u/3668429/blog/1928095

你可能感兴趣的文章
5个让人赞不绝口的微信小程序,拒绝占用手机内存!
查看>>
Spring Security整合KeyCloak保护Rest API
查看>>
POS概述
查看>>
containerd发布了CRI修复程序和CVE-2019-5736更新的runc
查看>>
WEB前端开发的思考与感悟
查看>>
微信自动跳转浏览器打开APP(APK)下载链接
查看>>
==与===的区别
查看>>
不同工具查看代码分支diff的差异
查看>>
白话Java I/O模型
查看>>
上传一张照片,让算法告诉你是否患有抑郁症
查看>>
VR厂商唯晶科技获2800万C+轮融资,曾开发过游戏《圣女之歌》
查看>>
Countly 19.02.1 发布,实时移动和 web 分析报告平台
查看>>
TCP连接中time_wait在开发中的影响-搜人以鱼不如授之以渔
查看>>
Oracle数据库机出新帮助不同规模企业迈向云端
查看>>
前端通信:ajax设计方案(六)--- 全局配置、请求格式拓展和优化、请求二进制类型、浏览器错误搜集以及npm打包发布...
查看>>
微服务分布式企业框架 Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis+KafKa
查看>>
被《时代周刊》选为年度最佳发明,PS VR靠的竟然是价格
查看>>
通用唯一标识码UUID的介绍及使用。
查看>>
spring笔记--依赖注入之针对不同类型变量的几种注入方式
查看>>
Ajax的简单学习
查看>>