JavaSE 14(构造函数以及String类型)

前言:

继续整理昨天剩下的以及String类型的重要知识点以及难点。

1.构造函数:

在这里插入图片描述

1.构造方法是一种特殊的方法。它们有以下三个特殊性:

1. 构造方法必须具备和所在类相同的名字。

2. 构造方法没有返回值类型,甚至连 void 也没有。

3. 构造方法是在创建一个对象使用 new 操作符时调用的。构造方法的作用是初始化对象。
构造方法具有和定义它的类完全相同的名字。和所有其他方法一样,构造方法也可以重载(也就是说,可以有多个同名的构造方法,但它们要有不同的签名),这样更易于用不同的初始数据值来构造对象。

一个常见的错误就是将关键字 void 放在构造方法的前面。例如:

public void Circle() { }

new ClassName(arguments);

public void Circle() { }

在这种情况下,CircleO 是一个方法,而不是构造方法。

构造方法是用来构造对象的。为了能够从一个类构造对象,使用 new 操作符调用这个类
的构造方法,如下所示:

new ClassName(arguments);

例如: new Circle() 使用Circle 类中定义的第一个构造方法创建一个 Circle 对象。

new Circle(25)调用 Circle 类中定义的第二个构造方法创建一个 Circle 对象。

通常,一个类会提供一个没有参数的构造方法(例如:Circle())。这样的构造方法称为无参构造方法(no-arg 或 noargument constructor) — 个类可以不定义构造方法。在这种情况下,类中隐含定义一个方法体为空的无参构造方法。这个构造方法称为默认构造方法(default constructor),当且仅当类中没有明确定义任何构造方法时才会自动提供它。

2.构造函数调用和内存图解:

在这里插入图片描述
图解说明:

1. 首先会将main函数压入栈中,执行main函数中的 new Person(23,“张三”);

2. 在堆内存中分配一片区域,用来存放创建的Person对象,这片内存区域会有属于自己 的内存地址(0x88)。然后给成员变量进行默认初始化(name=null,age=0)。

3. 执行构造函数(这里省略部分知识,后面讲解)中的代码(age = a ; name = nm;),这段代码执行结束后,成员变量age和name的值已经改变。此步骤也为构造函数 初始化。执行结束之后构造函数弹栈,Person对象创建完成。将Person对象的内存地 址0x88赋值给p2

3.构造函数的细节:

1. 一个类中可以有多个构造函数,多个构造函数是以重载的形式存在的

2. 构造函数中也是有return语句的,用于结束初始化动作。

3. 构造函数是可以被private修饰的,作用:其他程序无法创建该类的对象

4.构造函数和一般函数的区别:

1. 构造函数在对象创建时就执行了,而且只执行一次。

2. 一般函数是在对象创建后,需要使用时才被对象调用,并可以被多次调用。

问题:

有了构造函数之后可以对对象的属性进行初始化,那么还需要对应的set和get方法吗?

需要相应的set和get方法,因为对象在创建之后需要修改和访问相应的属性值时在,这时只能通过set或者get方法来操作。

5.this调用构造函数:

在之前学习函数之间调用时,可以通过函数名进行调用。可是针对构造函数,无法通过构 造函数名来相互调用。 构造函数之间的调用可以通过this关键字来完成。

构造函数调用格式: this(参数列表);

注意:
1. this到底代表什么呢?this代表的是对象,具体代表哪个对象呢?

哪个对象调用了this所在 的函数,this就代表哪个对象。 调用其他构造函数的语句必须定义在构造函数的第一行,原因是初始化动作要最先执行。

2. 当在函数中出现了局部变量和成员变量同名的时候,那么在方法中怎么区别局部变量成员变量呢?

可以在成员变量名前面加上this.来区别成员变量和局部变量

2. String 类型:

在这里插入图片描述

1.char类型只能表示一个字符。为了表示一串字符,使用称为 String (字符串)的数据类型。

例如,下述代码将 message 声明为一个字符串,其值为 “Welcome to Java”:

String message = “Welcome to Java”;

String 实际上与 System 类和 Scanner 类一样,都是 Java 库中一个预定义的类。String类型不是基本类型,而是引用类型(reference type)。任何 Java 类都可以将变量表示为引用类型。使用引用类型声明的变量称为引用变量,它引用一个对象。这里,message 是一个引用变量,它引用一个内容为 Welcome to ]ava 的字符串对象。

在这里插入图片描述
1. String 是 Java 中的对象。表 4-7中的方法只能从一个特定的字符串实例来调用。由于这
个原因,这些方法称为实例方法。

2. 非实例方法称为静态方法。静态方法可以不使用对象来调用。定义在 Math 类中的所有方法都是静态方法。它们没有绑定到一个特定的对象实例上。

3. 调用一个实例方法的语法是 reference-Variable.methodName(arguments)。

4. 一个方法可以有多个参数,或者无参。例如,charAt(index)方法具有一个参数,但是 lengthO 方法则无参。回顾曾经介绍过的,调用静态方法的语法是 ClassName.methodName(arguments)。

例如:

Math 类中的 pow 方法可以使用 Math.pow(2,2.S)来调用。

2.求字符串长度:

可以调用字符串的length( )方法获取它的长度。

例如,下面代码:

String message = “Welcome to Java”;

System.out.println("The length of " + message + " is " + message.length());

显示

The length of Welcome to Java is 15

在这里插入图片描述
3.从字符串中获取字符:
在这里插入图片描述
4.字符串比较:

在这里插入图片描述

如何比较两个字符串的内容是否相等呢?你可能会尝试使用 == 操作符

如下所示:

if (stringl == string2)

System.out.println(“string1 and string2 are the same contents”);

else

System.out.println(“string1 and string2 are not equal”);

然而,操作符 ==只能检测 string1 和 string2是否指向同一个对象,但它不会告诉你它们的内容是否相同。因此,不能使用 ==操作符判断两个字符串变量的内容是否相同。取而代之,应该使用 equals 方法。

例如,可以使用下面的代码比较两个字符串:

if (stringl.equals(string2))

System,out.printlnC’stringl and string2 have the same contents’1);

else

System.out.printlnC’stringl and string2 are not equal");

在这里插入图片描述

在这里插入图片描述

5.字符串和数字间的转换:

可以将数值型字符串转换为数值。要将字符串转换为 int 值,可以使用Integer.parselnt方法,如下所示:

int intValue=Integer.parseInt(intString);

intString 是一个数值型字符串,例如"123"。

要将字符串转换为 double 值,使用Double.parseDouble 方法,如下所示:

double doubleValue = Double.parseDouble(doubleString);

doublestring是一个数值型字符串,例如"123.45"。

如果字符串不是数值型字符串,转换将导致一个运行时错误。Integer 和 Double 类都包含在 java.lang 包中,因此它们是自动导入的。

可以将数值转换为字符串,只需要简单使用字符串的连接操作符,如下所示:

String s = number + “” ;

3.吃鸡问题:

  • 设计一个绝地求生游戏的最最最初级的玩家1射击玩家2的程序,主要运用到面向对象,构造函数等知识点。

1.思路及步骤:

在这里插入图片描述

2.具体程序以及每一层构造不同的函数:

在JVM中运行的编码(拥有主函数main):
在这里插入图片描述

第一层调用的构造函数:

在这里插入图片描述
在这里插入图片描述

第二层调用的构造函数:

在这里插入图片描述

第三层调用的构造函数:

在这里插入图片描述

第四层调用的构造函数:

在这里插入图片描述

第五层调用的构造函数:

在这里插入图片描述
3.运行结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值