java第三讲课后动手动脑及代码编写
1.
类就是类型,对象就是这种类型的实例,也就是例子。类是抽象的东西,对象是某种类的实实在在的例子。例如:车是一个类,汽车,自行车就是他的对象。
对象的定义方法?
(1)对象声明:类名 对象名;
前者是原始数据类型,例如int,float之类的变量,定义一个原始类型的变量时,会马上给其分配内存。
后者是引用类型变量,“引用”一个对象的变量称为“引用类型”的变量,对象变量的初始化中,该变量若不引用一个真实的对象,则必须声明为null。而且引用对象后的对象变量,且如果不再使用此变量,将会回收类定义的对象所占用的内存。(对象变量)


答: 一般不可以。类似于字符串的比较大小,使用equals()进行比较,用法与其相同。当“==”施加于“原始数据类型”变量时,是比较变量所保存的数据是否相等。当“==”施加于引用类型变量时,是比较这两个变量是否引用同一对象。引用代表地址,所以当施加于引用类型变量时,实际上是比较两个引用类型变量中保存的对象地址是否一样。但是当对象进行赋值是可以判等的。
运行结果:
3.
答:“内容相等”,其实是就“对应字段值”一致。在JAVA中要比对两个对象的字段值,可以 重写基类的equals()方法;Object是Java的最顶层基类,其中定义了equals( )方法。
在java中要比较两个对象的字段值,可以重写(override)基类的equals()方法。
重写方法如下:
运行结果:
4.
答:这个方法没有返回值类型,而且和类名一样。
答:在一个类中若没有定义构造方法,依然可以创建一个无参数的对象,这是因为java编译器会自动为该类生成一个默认的构造方法,程序在创建对象时会自动调用默认的构造方法。默认的构造方法没有参数,在其方法体中也没有任何代码,即什么也不做。由于系统提供的默认的构造方法往往不能满足用户的需求,所以用户自己定义构造方法,一旦用户定义了构造方法,系统就不再提供默认的构造方法,这是Java的覆盖所致。所以上述定义的构造方法是有参数的赋值,定义的对象并没有,所以编译不能通过。
5.
答:当类成员指定的默认值写在了初始化块前边,初始化块说了算。反之,类成员定义时指定的默认值说了算。
对于类的构造函数,类的初始化块不接收任何参数,而且只要一创建类的对象,他们就会被执行(构造函数),因此适用于封装那些“对象创建时必须执行的代码”。
运行结果:
6.
首先,当静态初始化块和非静态的初始化块都存在时,各个类先执行静态初始化块。
创建子类型对象时,也会追寻到父类,使父类也执行静态初始化块。且首先执行父类的静态初始化块内容,接着执行子类的静态初始化块方法,直到所有子类的静态初始化块内容执行完成。再回到父类,查看非静态的初始化块和构造方法,如果有继续执行。父类的非静态初始化块和构造方法执行完毕在执行子类的。总之,每个类的静态初始化块先执行,执行完毕在执行各个类的非静态初始化块。
运行结果:
7.
答:可以先用new创建一个对象,通过对象去调用成员方法和变量。如图:
8.
在JAVA中,数据类型可分为两大种,基本数据类型(值类型)和类类型(引用数据类型)。基本类型的数据不是对象,所以对于要将基本数据类型当对象使用的情况,JAVA提供的包装类。
所谓装箱,就是把基本类型用他们相对应的引用类型包装起来,使他们可以具有对象的特质,如我们可以把int型包装成Integer类的对象,或者把double包装成Double等等。
所谓拆箱,就是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据。
J2SE5.0后提供了自动装箱和拆箱的功能,此功能事实上是编译器来帮忙,编译器在编译时依照编写的方法,决定是否进行装箱或拆箱动作。
自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动的封装到与它相同类型的包装中。
自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动的提取出来,没必要再去调用intValue()和doubleValue()方法。
自动装箱只需将该值赋给一个类型包装器引用,java会自动创建一个对象。例如:
Integer i = 100;
包装类(Wrapper Classes),拆箱和装箱
基本类型和对应的包装类可以相互装换:
由基本类型向对应的包装类转换称为装箱,例如把double包装成 Double 类的对象;
包装类向对应的基本类型转换称为拆箱,例如把 Integer 类的对象重新简化为 int。
但是:
为什么?
在java中,“==”是比较object的reference而不是value,自动装箱后,代表的都是Integer这个Object,因此“==”比较的是其引用。
java为了提高效率,IntegerCache类中有一个数字缓存了值从-128到127的Integer对象,当我们调用Integer.valueOf(int i)的时候,如果i的值是>=-128且<=127时,会直接从这个缓存中返回一个对象,否则就new一个Integer对象。所以结果2比较的是引用,两者属于两个对象,内存也不一样,理所当然返回false。
对于结果1,虽然比较的时候还是比较对象的引用,但是自动装箱时,java在编译的时候Integer i1 = 100;被翻译成Integer i1 = Integer.valueOf(100);关键就在于这个valueOf()的方法。
9.
源程序代码:
import java.util.*;
public class No3kelianxi
{
public static void main(String[] args)
{
System.out.println("输入要创建对象的个数");
Scanner reader=new Scanner(System.in);
int n=reader.nextInt();
demo[]expe=new demo[1000];
for(int i=0;i<n;i++)
{
expe[i]=new demo();
}
System.out.println("一共创建了"+demo.num+"个对象");
reader.close();
}
}
class demo
{
static int num;
static
{
num=0;
System.out.println("调用了静态初始化块!");
}
public demo()
{
num++;
}
}
运行结果:
java第三讲课后动手动脑及代码编写的更多相关文章
- java第二次课件课后动手动脑习题整理总结(2019年9月23号)
一.动手动脑 1 1.题目 2.程序源代码 package yang8; import java.util.Scanner; import java.util.Random; public class ...
- JAVA语法基础作业——动手动脑以及课后实验性问题 (八)
一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...
- java课堂第一次随机测试和课件课后动手动脑问题解决(2019-9-16 )
一.课堂测试 1.课堂测试:花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求 (1)减法结果不能为负数 (2)乘法结果不得超过一百,除法结果必须为整数 (3)题目避免重复: (4)可 ...
- JAVA方法03之动手动脑问题解决
动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉) public class SquareIntTest { public stat ...
- Java类和对象动手动脑
动手动脑1 以下代码为何无法通过编译?哪儿出错了?
- 11.8java课后动手动脑
package 动手动脑; import javax.swing.*; class AboutException { public static void main(String[] a) { int ...
- Java文件与类动手动脑
动手动脑1: 使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. package classJava; import java.io.IOExcepti ...
- Java第一节课动手动脑
在第一节课的动手动脑中,主要解决四则运算问题. 首先第一个是出30道四则运算题目,在100以内.这个问题需要控制随机数生成的范围和结果的范围在100以内就可以. 第一次改进是3点:一为避免重复,二为定 ...
- 10.18号java课后动手动脑
问题一结论:类如果提供了一个自定义的构造方法,将导致系统不再提供默认构造方法. 问题二结论:(1)程序运行的结果是100和300,field=200为类的初始化块,可以在类中使用“{”和“}”将语句包 ...
随机推荐
- 不支持中国移动的N79频段,红米K30是假5G手机么?影响有多大?
原文:https://mparticle.uc.cn/article.html?uc_param_str=frdnsnpfvecpntnwprdssskt&btifl=100&app= ...
- 周董新歌搞崩QQ,抓取20W评论看看歌迷在说啥
9 月 16 日晚间,周董在朋友圈发布了最新单曲<说好不哭> 发布后,真的让一波人哭了 一群想抢鲜听的小伙伴直接泪奔 因为 QQ 音乐直接被搞崩了 没想到干翻 QQ 音乐的不是网易云音乐 ...
- VBA基础 - 分支和循环
概要 编程语言的基础除了数据类型, 就是控制结构了. 所谓控制结构, 主要就是分支和循环. 分支 废话不说, 直接示例代码: 单条件判断 1 Sub Test() 2 If 2 > 1 Then ...
- geth 基本使用
概要 geth 是以太坊的官方 golang 客户端. 通过 geth 的使用可以直观的了解以太坊, 乃至区块链的运作. 下面, 通过 geth 来构造一次搭建私链, 创建账户, 挖矿, 交易的流程. ...
- AutoDesk公司搞的fbx模型格式
FBX® data exchange technology is a 3D asset exchange format that facilitates higher-fidelity data ex ...
- linux (centos)增删改查用户命令
1,查看用户 cat /etc/passwd 2,删除用户 userdel 用户名 3,查看组 cat /etc/group 4,删除组 groupdel 组名 5.查看系统中有哪些用户: cut - ...
- elementui树表修改子节点不能实时更新的解决办法
在使用ElementUI提供的树表(el-table)的时候发现,如果手动通过JS修改了某个节点的children中的一条记录(子节点)的话,并不会自动刷新. 简单分析了一下,原因大概是因为VUE的数 ...
- Entity Framework 6 中如何获取 EntityTypeConfiguration 的 Edm 信息?(五)
直接贴代码了: NewsInfo 实体类: public class NewsInfo { public int NewsInfoId { get; set; } public string News ...
- Zabbix 监控阿里云RDS
简介 Zabbix 监控阿里云RDS数据库.主要通过阿里云提供的API来进行监控. 需要在阿里云获取“用户AccessKey”指定ID,进行RDS监控. 环境 服务:Zabbix 3.0.28.zab ...
- 分布式Redis深度历险-复制
Redis深度历险分为两个部分,单机Redis和分布式Redis. 本文为分布式Redis深度历险系列的第一篇,主要内容为Redis的复制功能. Redis的复制功能的作用和大多数分布式存储系统一样, ...