1.

类就是类型,对象就是这种类型的实例,也就是例子。类是抽象的东西,对象是某种类的实实在在的例子。例如:车是一个类,汽车,自行车就是他的对象。

对象的定义方法?

(1)对象声明:类名 对象名;

(2)对象创建 对象名 =  new 类名(); new作用:分配内存空间。
两种定义方法是不一样的。

前者是原始数据类型,例如int,float之类的变量,定义一个原始类型的变量时,会马上给其分配内存。

后者是引用类型变量,“引用”一个对象的变量称为“引用类型”的变量,对象变量的初始化中,该变量若不引用一个真实的对象,则必须声明为null。而且引用对象后的对象变量,且如果不再使用此变量,将会回收类定义的对象所占用的内存。(对象变量)

 
2.

答: 一般不可以。类似于字符串的比较大小,使用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第三讲课后动手动脑及代码编写的更多相关文章

  1. java第二次课件课后动手动脑习题整理总结(2019年9月23号)

    一.动手动脑 1 1.题目 2.程序源代码 package yang8; import java.util.Scanner; import java.util.Random; public class ...

  2. JAVA语法基础作业——动手动脑以及课后实验性问题 (八)

    一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...

  3. java课堂第一次随机测试和课件课后动手动脑问题解决(2019-9-16 )

    一.课堂测试 1.课堂测试:花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求 (1)减法结果不能为负数 (2)乘法结果不得超过一百,除法结果必须为整数 (3)题目避免重复: (4)可 ...

  4. JAVA方法03之动手动脑问题解决

    动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉) public class SquareIntTest { public stat ...

  5. Java类和对象动手动脑

    动手动脑1 以下代码为何无法通过编译?哪儿出错了?

  6. 11.8java课后动手动脑

    package 动手动脑; import javax.swing.*; class AboutException { public static void main(String[] a) { int ...

  7. Java文件与类动手动脑

    动手动脑1: 使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. package classJava; import java.io.IOExcepti ...

  8. Java第一节课动手动脑

    在第一节课的动手动脑中,主要解决四则运算问题. 首先第一个是出30道四则运算题目,在100以内.这个问题需要控制随机数生成的范围和结果的范围在100以内就可以. 第一次改进是3点:一为避免重复,二为定 ...

  9. 10.18号java课后动手动脑

    问题一结论:类如果提供了一个自定义的构造方法,将导致系统不再提供默认构造方法. 问题二结论:(1)程序运行的结果是100和300,field=200为类的初始化块,可以在类中使用“{”和“}”将语句包 ...

随机推荐

  1. 分布式共识算法 (四) BTF算法(区块链使用)

    系列目录 分布式共识算法 (一) 背景 分布式共识算法 (二) Paxos算法 分布式共识算法 (三) Raft算法 分布式共识算法 (四) BTF算法 一.引子 前面介绍的算法,无论是 Paxos ...

  2. vue前端post请求之坑

    最近用的vue请求数据,坑死,还是对前端vue框架不熟. 与后端通信有问题,要么是json加入到url有问题.要么是json解析有问题. 解决方法: 1.请求参数一个用url传 var json=[{ ...

  3. [转]应用工具 .NET Portability Analyzer 分析迁移 Dotnet core

    大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码.与构建不同的应用以面向多个平台相比,这种方法更加容易.如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候 ...

  4. Mysql 二进制日志备份还原

    Mysql 二进制日志备份还原 一.开启二进制日志 1.进入配置文件[mysqld]下添加配置 方案一 vim /etc/my.cnf log-bin = /usr/local/mysql/logs/ ...

  5. python操作时间

    一.问题背景 在对数据进行操作的时候我们总是会遇到数据类型是date类型的数据,这种数据会让我们在使用和操作的过程中遇到一些问题,比如int类型和date类型不对等,string类型和date类型不对 ...

  6. ASP.NET MVC EF 连接数据库(一)-----Database First

    database first (VS2015 ,Sql Server2014) 1,新建MVC项目 实例:   源码代码:http://note.youdao.com/noteshare?id=1fd ...

  7. UWP使用Microsoft.Data.Sqlite的记录

    我在UWP中使用SQLite数据库时,并没有使用网上的SQLite for Universal App Platform方案,而使用了Microsoft和SQLite社区一起维护的Microsoft. ...

  8. Java操作zip-压缩和解压文件

    一.说明 rar格式的压缩包收费,java支持zip格式的压缩和解压 二.工具类 import java.io.*; import java.util.Enumeration; import java ...

  9. mac下安装php7.2、mysql5.7、nginx环境

    本篇文章是通过homebrew安装,home brew对于Mac相当于centos 的yum一样方便简单,大家可以先去安装home brew.网上很多简单靠谱的例子,这里不写了 一.准备条件为了安装最 ...

  10. asp.net core 系列 2 启动类 Startup.CS

    学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 在探讨Startup启动类之前,我们先来了解下Asp.NET CORE 配置应用程序的执行顺序 ...