本文主要内容:
*方法重载的相关知识
*构造方法的使用
*this关键字的使用
*Scanner类及其方法的使用
1.方法重载举例
System.out.println();
System.out.println("Java");
System.out.println(5);
System.out.println(3.14);
System.out.println(true);
System.out.println(to);
2.概念:一个类中的一组方法,相同的方法名字,不同的参数列表,这样的一组方法构成方法重载。参数列表不同体现在哪里?参数的个数、参数的类型、参数的顺序
3.作用:为了使用者便于记忆与调用,只需要记录一个名字,执行不同的操作。
4.自己也可以设计方法重载
调用方法的时候可以通过方法名字定位方法,如果方法的名字一致,可以通过参数的数据类型定位方法,如果没有与传递参数数据类型一致的方法,可以找一个参数类型可以进行转换。
5.JDK1.5版本之后出现了一种新的写法
int…x:动态的参数列表,类型固定,个数可以动态0…n都可以,x本质上就是一个数组,有length属性、有index下标,动态参数列表的方法(不能与相同意义的数组类型的方法构成方法重载),本质是一样的。动态参数列表的方法可以不传参数,相当于0个,数组的方法必须传递参数。动态参数列表在方法的参数中只能存在一份,且必须放置在方法参数的末尾。
6.类的内部成员
属性——静态描述类的特征(变量、存值)
方法——动态描述类的行为(做事情)
构造方法——用来创造当前类的对象(方法很特殊)
代码块——理解为就是一个方法(非常特殊,无参数、无返回值、无名字)
7.构造方法
- 作用:只有一个,构造当前类的对象
- 用法:通过new关键字调用
- 特点:
(1)每一个类都有构造方法,若自己在类中没有定义,系统会默认提供一个无参数的构造方法。若在类中自己定义了构造方法,则默认无参数的构造方法即被覆盖。
(2)构造方法是否存在方法重载?——存在构造方法重载 - 每一个类都有构造方法
若不定义,系统会默认提供构造方法 - 为什么要定义构造方法?什么时候需要设计构造方法?
在创建对象的同时,想要一并做了一些事情,默认提供的构造方法是不会做的,这个时候我们可以自己定义构造方法(无参数的构造方法内做事,也可以带参数的)
8.this关键字
this关键字的使用:[构造方法中,属性与变量重名,必须一个代替词代替对象]
(1)是一个关键字,代替的是某一个对象(当前调用属性或方法时的那个对象)
(2)this既然代替的是一个对象
this可以调用属性、方法,在一个构造方法中可以调用另一个构造方法,通过this();省略了构造方法的名字(必须与类名一致),必须在另一个构造方法中调用,必须在程序的第一页。构造方法一般优于一般方法,在一般方法中不能调用构造方法。
(3)this调用属性或方法这一行代码可以放置在类中任何成员位置,上下顺序随意
(4)方法之间不可以互相调用(编译好用),应为可能会发生StackOverflowError栈溢出错误。
(5)构造方法不能来回互相调用(编译出错)
9.关于Scanner类及其中方法的使用
(1)导包 java.util
(2)创建对象 Scanner scanner = new Scanner(System.in);
(3)做事情 int value = input.nextInt();String value = input.nextLine();
(4)读取方式:除了nextLine以外其余的方法都不读取回车符
(5)读取返回结果:
nextInt ——> int
nextFloat——>float
next——>String
nextLint——>String
next方法看到回车或空格都认为读取结束,即输入ABC def 输出ABC
//举例
Scanner scanner = new Scanner(System.in);
System.out.println("请输入密码:");
int password = scanner.nextInt();
sacnner.nextLine();//解决办法3
System.out.println("请输入账号");
String name = scanner.nextLine();
Syste.out.println(name);
System.out.println(password);
//输出结果中name为空。应为password输入为数字加回车符,而nextInt方法不读取回车符
//将数字读取后只剩下回车符。但是name方法读取会读回车符及回车符之前的,而回车符之前
//什么也没有,所以name输出为空
//=======================================================================
//解决方法
1、利用nextLine方法读取所有的属性
2、利用next方法读取字符串(不能有空格)
3、在方法中在加入nextLine方法