详解 JAVA 创建对象 NEW

详解 JAVA 创建对象 NEW
详解 JAVA 创建对象 NEW

类名自定义名= new 类名()

假设我们在函数中写了如下这个简单的语句:

StringBuffer str = new StringBuffer("Hello world");

别看这个语句简单,其实包含了如下三个步骤:

首先,newStringBuffer("Helloworld")在堆里申请了一坨内存,把创建好的StringBuffer 对象放进去。

其次,StringBufferstr声明了一个指针。这个指针本身是存储在栈上的(因为语句写在函数中),可以用来指向某个StringBuffer类型的对象。或者换一种说法,这个指针可以用来保存某个StringBuffer对象的地址。

最后,当中这个等于号(赋值符号)把两者关联起来,也就是把刚申请的那一坨内存的地址保存成str的值。

引用对象之间的赋值、判相等

通过上述的图解,大伙儿应该明白指针变量和该指针变量指向的对象是一个什么关系了吧。

还是接着刚才的例子,再来看赋值的问题。对于如下语句:

StringBuffer str2 = str;

这个赋值语句是啥意思捏?实际上就是把str的地址复制给str2,记住,是地址的复制,StringBuffer对象本身并没有复制。所以两个指针指向的是同一个东东。

再搞一张示意图,如下(今天画这些图把我累坏了):

实际上两个指针的值相同,则肯定是指向同一个对象(所以对象内容必定相同)。但是两个内容相同的对象,它们的地址可能不一样(比如克隆出来的多个对象之间,地址就不同)。

final常量的问题

针对引用类型变量的final修饰符也是很多人搞混淆的地方。实际上final只是修饰指针的值(也就是限定指针保存的地址不能变)。至于该指针指向的对象,内容是否能变,那就管不着了。所以,对于如下语句:

final StringBuffer strConst = new StringBuffer();

你可以修改它指向的对象的内容,比如:

strConst.append(" ");

但是不能修改它的值,比如:

strConst = null;

传参的问题

引用类型(在函数调用中)的传参问题,是一个相当扯的问题。有些书上说是传值,有些书上说是传引用。搞得Java程序员都快成神经分裂了。所以,我们最后来谈一下“引用类型参数传递”的问题。

v还是拿刚才的例子,假设现在要把刚才创建的那一坨字符串打印出来,我们会使用如下语句:

System.out.println(str);这个语句又是什么意思捏?这时候就两说了。

第一种理解:可以认为传进函数的是str这个指针,指针说白了就是一个地址的值,说得再白一点,就是个整数。按照这种理解,就是传值的方式。也就是说,参数传递的是指针本身,所以是传值的。

第二种理解:可以认为传进去的是StringBuffer对象,按照这种理解,就是传引用方式了。因为我们确实是把对象的地址(也就是引用)给传了进去。

Java面向对象习题

选择题 1、下列关于变量的叙述哪个是错的?() A. 实例变量是类的成员变量。 B. 在方法中定义的局部变量在该方法被执行时创建。 C. 实例变量用关键字static声明。 D. 局部变量在使用前必须被初始化。 2、在Java语言中,下列哪个包是编译器自动导入的?() A. java.applet B. https://www.360docs.net/doc/343462935.html,ng C. java.io D. java.awt 3、当类的成员未用访问权限修饰符时,Java认为此成员的访问权限为()。 A. private B. protected C.friendly D.public 4、下面哪个关键字不是用来控制对类成员的访问的?() A. public B. protected C. default D. private 5、下面哪一个特性不是面向对象编程主要体现的()。 A. 封装性 B. 继承 C. 多态 D. 类 6、不允许作为类及类成员的访问控制符的是()。 A. public B. private C. static D. protected 7、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB 作为前缀就可以调用它,该方法头的形式为()。 A、static void method( ) B、public void method( ) C、final void method( ) D、abstract void method( ) 8、可以在下面代码段point x处写入的是?() //point x public class Interesting{ //do something } A. String str; B. static int PI=3.14; C. public class MyClass{//do other thing…} D. import java.awt.*; 9、下列关于变量的叙述哪个是错的?() A、实例变量是类的成员变量。 B、在方法中定义的局部变量在该方法被执行时创建。 C、实例变量用关键字static声明。 D、局部变量在使用前必须被初始化。 10、下列哪个类声明是正确的?() A、abstract final class HI{} B、abstract private move(){} C、protected private number; D、public abstract class Car{}

(完整版)Java创建对象的四种方法

Java中创建对象的四种方式 1.用new语句创建对象,这是最常见的创建对象的方法。 2.运用反射手段,调用https://www.360docs.net/doc/343462935.html,ng.Class或者https://www.360docs.net/doc/343462935.html,ng.reflect.Constructor类的newInstance()实例方法。 3.调用对象的clone()方法。 4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。 以下是代码片段: package org.whb.test.demo724; /* *测试Cloneable接口的使用 *包含第一种和第三种方法clone() *不过要注意在clone()中深复制和潜复制的理解 *实例化对象 */ class Person implements Cloneable{ private String name; private int age; public Person( String name,int age) { https://www.360docs.net/doc/343462935.html, = name; this.age = age; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name){ https://www.360docs.net/doc/343462935.html, =name; } @Override public Object clone() throws CloneNotSupportedException { // TODO Auto-generated method stub return super.clone();

JAVA类与对象及数组习题及答案

JAV A类和对象及数组习题 一、选择题 (1)下列构造方法的调用方式中,正确的是(D )--原因:在通过new实例化一个类对象时系统会自动调用该类相应的构造方法。 A.按照一般方法调用B.由用户直接调用 C.只能通过new自动调用D.被系统调用 (2)在Java中,能实现多重继承效果的方式是(C )--原因:一个类可以同时实现多个接口。Java接口反映了对象较高层次的抽象,还弥补了Java只支持单继承的不足,可用它来完成多继承的一些功能。 A.内部类B.适配器C.接口D.同步 (3)int型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( D )—原因:java中定义常量用关键字final来定义。 A.public int MAX_LENGTH=100 B.final int MAX_LENGTH=100 C.public const int MAX_LENGTH=100 D.public final int MAX_LENGTH=100 (4)下列叙述中,正确的是( A )—原因:Java严格区分大小写,所以变量number 与Number不相同;Java 中的注释方式除了“//”行注释之外还有段注释“/*-------*/”和文档注释/**-------*/。Java源文件中的public类只能有一个。 A. 声明变量时必须指定一个类型 B. Java认为变量number与Number相同 C. Java中唯一的注释方式是"//" D. 源文件中public类可以有0或多个 (5)下列叙述中,错误的是( D )—原因:子类继承父类,并且可以有自己的成员变量和成员方法。所以可以认为子类是父类的扩展。

详解 JAVA 创建对象 NEW

类名自定义名= new 类名() 假设我们在函数中写了如下这个简单的语句: StringBuffer str = new StringBuffer("Hello world"); 别看这个语句简单,其实包含了如下三个步骤: 首先,newStringBuffer("Helloworld")在堆里申请了一坨内存,把创建好的StringBuffer 对象放进去。 其次,StringBufferstr声明了一个指针。这个指针本身是存储在栈上的(因为语句写在函数中),可以用来指向某个StringBuffer类型的对象。或者换一种说法,这个指针可以用来保存某个StringBuffer对象的地址。 最后,当中这个等于号(赋值符号)把两者关联起来,也就是把刚申请的那一坨内存的地址保存成str的值。

引用对象之间的赋值、判相等 通过上述的图解,大伙儿应该明白指针变量和该指针变量指向的对象是一个什么关系了吧。 还是接着刚才的例子,再来看赋值的问题。对于如下语句: StringBuffer str2 = str; 这个赋值语句是啥意思捏?实际上就是把str的地址复制给str2,记住,是地址的复制,StringBuffer对象本身并没有复制。所以两个指针指向的是同一个东东。 再搞一张示意图,如下(今天画这些图把我累坏了):

实际上两个指针的值相同,则肯定是指向同一个对象(所以对象内容必定相同)。但是两个内容相同的对象,它们的地址可能不一样(比如克隆出来的多个对象之间,地址就不同)。 final常量的问题 针对引用类型变量的final修饰符也是很多人搞混淆的地方。实际上final只是修饰指针的值(也就是限定指针保存的地址不能变)。至于该指针指向的对象,内容是否能变,那就管不着了。所以,对于如下语句: final StringBuffer strConst = new StringBuffer(); 你可以修改它指向的对象的内容,比如: strConst.append(" "); 但是不能修改它的值,比如: strConst = null; 传参的问题 引用类型(在函数调用中)的传参问题,是一个相当扯的问题。有些书上说是传值,有些书上说是传引用。搞得Java程序员都快成神经分裂了。所以,我们最后来谈一下“引用类型参数传递”的问题。 v还是拿刚才的例子,假设现在要把刚才创建的那一坨字符串打印出来,我们会使用如下语句: System.out.println(str);这个语句又是什么意思捏?这时候就两说了。 第一种理解:可以认为传进函数的是str这个指针,指针说白了就是一个地址的值,说得再白一点,就是个整数。按照这种理解,就是传值的方式。也就是说,参数传递的是指针本身,所以是传值的。 第二种理解:可以认为传进去的是StringBuffer对象,按照这种理解,就是传引用方式了。因为我们确实是把对象的地址(也就是引用)给传了进去。

Java面向对象编程上机-练习题汇总

【练习题】类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A 类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。 【练习题】类的成员变量: 请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。 【练习题】类的成员变量与方法、构造方法 在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。 定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。 为MyTime类定义构造方法,以方便创建对象时初始化成员变量。 再定义diaplay方法,用于将时间信息打印出来。 为MyTime类添加以下方法: addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 【练习题】构造方法 编写Java程序,模拟简单的计算器。 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象,调用各个方法,并显示计算结果。 【练习题】构造方法: 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。

JAVA类与对象的创建

试验四 类和对象的创建 一.类的定义 类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类用来定义对象的模板。 类的实现包括两部分:类声明和类体。基本格式为: 修饰符class类名[extends父类名]{ /*类体的内容*/ } 1.类声明 以下是一个类声明的例子。 class People成为类声明,People是类名。习惯上,类名的第一个字母大写,但这不是必须的。类的名字不能是Java中的关键字,要符合标识符规定,即类的名字可以由字母、下划线、数字或美元符号组成,并且第一个字母不能是数字。但给类命名时,最好遵守下列规则: (1)如果类名使用拉丁字母,那么名字的首写字母使用大写字母,如Hello、Time、People等。 (2)类名最好容易识别,当类名由几个“单词”复合而成时,每个单词的首写字母使用大写,如BeijingTi me、AmericanGame、HelloChina等。 2.类体 编写类的目的是为了描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“{”、“}”以及它们之间的内容称为类体,大括号之间的内容称为类体的内容。 类体的内容由两部分构成:一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画功能。 下面是一个类名为“Trapezia”的类,类体内容的变量定义部分定义了4个float类型变量:top、bottom、h igh和laderArea,方法定义部分定义了两个方法:“getArea”和“setHigh”。

二.对象 1.对象的创建 创建一个对象包括对象的声明和为对象分配内存两个步骤。 (1)对象的声明。 一般格式为: 类的名字对象名字; 如: 这里People是类的名字,zhubajie是我们声明的对象的名字。 (2)为声明的对象分配内存。 使用new运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(你一定还记得构造方法的名字必须和类名相同这一规定),如: 例1: 「注」如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法。 2.对象的使用 对象不仅可以改变自己变量的状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。 通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。 例2:

java面向对象知识点总结

j a v a面向对象知识点总 结 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

1 类和对象 类: 类是用来描述一类事物的共性内容的, 类是抽象的; 创建类,如何描述 属性功能 用变量来描述属性 用方法来描述功能 对象: 就是现实中具体的事物,对象是具体的; 创建对象 类名对象名 = new 类名(); 如何通过对象访问类中属性和方法呢 对象名.变量名 对象名.方法名(); 只要是new的对象,就是新创建的,就会在内存中开辟一段单独的空间匿名对象 创建的对象没有赋值给具体的变量; 所以给匿名对象的属性赋值是没有任何意义的; 匿名对象使用场景

1 调用方法 2 作为参数传递 3 添加进容器中 This 关键字 This. 类中的普通方法访问到的成员前边都有this.这个关键字This. 就代表当前对象, 普通方法, 创建对象调方法, 谁调用就代表谁 This(); 可以用来在构造函数中调用本类与之相对应的构造函数使用注意事项: 1 this() 只能是构造函数的第一条执行语句 2 this() 不能在构造函数之间相互调用 3 this() 不能调用自己 构造函数(方法) 构造函数的作用 用来给对象进行初始话的(初始化就是指给对象的各个属性赋值) 构造函数何时执行 对象一创建就会调用与之相对应的构造函数

构造函数语法 修饰符没有返回值类型类名(参数列表){ 具体执行的代码 } 构造函数自动添加 当一个类中我们没有明确指定构造函数的话,jvm会自动帮我们添加一个空参数的构造, 如果我们指定了,就不添加了 构造函数和普通函数的区别 执行时机不同 对象一创建就会调用与之相对应的构造函数 普通函数只有被调用才会执行 return 1 就是用来在方法中返回具体结果(结果类型必须和方法的返回值类型一致) 2 即便方法的返回值类型是void,方法中也可以出现 return; 3 构造函数中也可以有return关键字 成员变量和局部变量 1 作用范围不同, 成员变量是定义在类中的,在整个类中都起作用 局部变量是定义在方法中的,在所在代码块起作用

java创建对像实例的三种方法

Java有一下三种方法可以创建对象实例。 1.new 通常都是使用java的关键字new来创建对象实例。 若有一个Something类,则可以通过下面的语句创建Something类的对象实例并指定到变量obj。 Something somethingNew = new Something(); 通过new创建对象实例必须把类名写在原代码里面。 2.clone 若程序写成如下,则可以根据当前对象(this)建立一个新实例对象(没有调用构造函数). public class Something implements Cloneable{ private Something obj; public Something cloneSomething() { try { obj = (Something)this.clone(); // obj = (Something)clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return obj; } } 如果需要复制上面的那个obj指向的对象实例时,调用 somethingNew.cloneSomething()方法就ok了。 但是为什么不直接使用somethingNew.clone()呢? JDK中Object# clone()方法的原型是: protected native Object clone() throws CloneNotSupportedException; 方法修饰符是protected,而不是public。这种访问的不可见性使得我们对Object#clone()方法不可见。

Java面向对象程序设计复习题附答案

Java面向对象程序设计复习题 一、选择题 1、下列哪个是Java中的关键字(C )。 A、run B、Integer C、default D、implement 2、下面关于Java.applet.Applet和其祖先类的描述语句哪个不对(B )。 A、Applet是Container的一种 B、Applet是Window的一种 C、Applet是Component的一种 D、Applet是Panel的一种 3、下列类DataOutputStream的构造方法正确的是(A )。 A、new dataOutputStream(new FileOutputStream(“out.txt”)); B、new dataOutputStream(“out.txt”); C、new dataOutputStream(new writer(“out.txt”)); D、new dataOutputStream(new FileWriter(“out.txt”)); 4、在switch(表达式)语句中,表达式的类型不能为(C )。 A、byte B、char C、long D、int 5、在接口MouseMotionListener中方法正确的是(A )。 A、Public void mouseDragged(MouseEvent) B、Public boolean mouseDragged(MouseEvent) C、Public void mouseDragged(MouseMotionEvent) D、Public boolean MouseDragged(MouseMotionEvent) 6、下面是一些异常类的层次关系 https://www.360docs.net/doc/343462935.html,ng.Exception https://www.360docs.net/doc/343462935.html,ng.RuntimeException https://www.360docs.net/doc/343462935.html,ng.IndexOutOfBoundsException https://www.360docs.net/doc/343462935.html,ng.ArrayIndexOutOfBoundsException https://www.360docs.net/doc/343462935.html,ng.StringIndexOutOfBoundsException 假设有一个方法X,能够抛出两个异常,Array Index和String Index异常,假定方法X中没有try-catch语句,下面哪个答案是正确的。(B ) A、方法X应该声明抛弃ArrayIndexOutOfBoundsException和StringIndexOutOfBounds Exception。 B、如果调用X的方法捕获IndexOutOfBoundsException,则ArrayIndexOutOfBounds Exception和StringIndexOutOfBoundsException都可以被捕获。 C、如果方法X声明抛弃IndexOutOfBoundsException,则调用X的方法必须用Try-catch 语句 捕获。 D、方法X不能声明抛弃异常。 7、现有一变量声明为boolean aa;下面赋值语句中正确的是( D )。 A、aa=0 B、aa=True C、aa="true" D、aa=false 8、某类Example的main()方法参数为args,当输入数据Java Example cat时,args[0]的值为(A )。 A、cat B、Java C、example D、null 9、String s1=new String(“Java”);String s2=new String(s1)则下列哪个说法是正确的(C )。 A、表达式s1==s2为真 B、s1和s2是同一个对象

Java基础入门教程(适合所有初学者)

第1章 Java语言概述与面向对象思想 1 1.1 Java语言的发展 1 1.1.1 Java语言的产生 1 1.1.2 Java语言的发展 1 1.2 Java语言的特点 2 1.3 面向对象与面向过程的差异 3 1.3.1 面向过程思想回顾 4 1.3.2 面向对象思想介绍 4 1.4 面向对象程序设计中的主要概念和特征 4 1.4.1 主要概念 5 1.4.2 主要特征 5 *1.5 Java与C++的差异 5 1.6本章小结5 习题 5 第2章 Java语言开发环境 6 2.1 JDK 6 2.1.1 JDK的简介6 2.1.2 JDK的构成6 2.1.3 JDK的使用6 2.2 IDE 8 2.2.1 IDE简介8 2.2.2 JBuilder 9 2.2.3 Eclipse 9 2.2.4 相关资源9 2.3 Project管理9 2.3.1 Project的含义9 2.3.2 可行的Project组织模式9 2.3.3 主要开发工具的Project目录10 2.4 本章小结10 习题10 第1章 Java语言概述与面向对象思想 1.1 Java语言的发展 1.1.1 Java语言的产生以介绍面向对象编程的基本概念、基本理论为重点,结合Java语言的语法规则、编程特点和设计思想、强调容易发生错误和编程应注意的地方,使学生能对Java 技术有一个总体了解,通过本课程学习,使学生掌握Java语言的基础知识,理解和掌握面向对象程序设计的基本思想,熟练地使用Java语言进行程序的编写、编译以及调试工作 上世纪90年代初期,Sun公司在研究一种适用于未来的智能设备的编程语言,该语言要具有一些新的特性,以避免C++的一些不足。 该语言起初命名为Oak,来源于语言作者Gosling办公室窗外的一棵橡树(Oak)。后来在注册时候遇到了冲突,于是就从手中的热咖啡联想到了印度尼西亚一个盛产咖啡的岛屿,中文名叫爪哇,Java语言得名于此。 随着Internet的迅速发展,Web应用日益广泛,Java语言也得到了迅速发展。1994年,Gosling

Java实例对象概念图解

Java编程面向对象——类与对象的关系 面向对象是一种组件化的设计思想,OOA、OOD、OOP 类与对象是整个面向对象之中最为基础的组成单元,如果需要给划出定义:类就是共性的集合,而对象是某一个性的产物;所有类实际上是用来描述一个对象的结构。 类是通过对象来使用的,而对象是通过类来创建的。 类与对象的基本定义: 在程序中,定义类,可以使用“class 类名称{}”的语法结构完成。 而类之中的组成主要有两点: * Field (属性、成员、变量),就是一推变量的集合 * Method (方法、行为),此时的方法是由对象调用的。 这个类中定义了两个属性和一个方法(可以定义更多属性和方法) *类虽然存在,但是类的使用,必须有对象; 对象的定义格式: 声明并实例化对象: 类名称对象名称 = new 类名称(); 分步完成: 声明对象:类名称对象名称 = null; 实例化对象:对象名称 = new 类名称(); 引用数据类型: 引用数据类型最大的不同在于需要内存的开辟及使用,所以关键字new 的主要功能就是开辟内存空间; 即:只要引用数据类型想使用,就必须使用关键字new 来开辟空间。 当一个对象实例化之后就可以使用以下方式利用对象来操作类的结构: 对象.属性:表示要操作类中属性内容 对象.方法():表示要调用类中的方法内容

内存概念: 堆内存:保存每一个对象的属性内容,堆内存需要用关键字 new 才可以开辟; 栈内存:保存的是一块堆内存的地址。简单的理解,栈内存保存的是对象的名字; 编程中的栈内存和堆内存的操作过程: 引用数据的初步分析: 引用是整个 Java 开发中的核心精髓所在,即:只有掌握了“引用”这一概念之后,才能加入下一步学习,类似C/C++ 中的指针概念。 在所有的引用分析里面,最关键的还是在于关键字 “new ”,每一次使用关键字new ,都会开辟新的堆内存空间,如果你的代码里面声明两个对象,并且使用了关键字new 为两个对象分别实例化操作,那么一定是各自占有各自(独立)的堆内存空间

《JAVA面向对象编程》([PDF] 孙卫琴著)

《JAVA面向对象编程》[PDF] 孙卫琴著 【目录】 第1章面向对象开发方法概述 1 1.1 结构化的软件开发方法简介3 1.2 面向对象的软件开发方法简介5 1.2.1 对象模型6 1.2.2 UML:可视化建模语言6 1.2.3 Rational Rose:可视化建模工具7 1.3 面向对象开发中的核心思想和概念7 1.3.1 问题领域、对象、属性、状态、行为、方法、实现7 1.3.2 类、类型9 1.3.3 消息、服务10 1.3.4 接口11 1.3.5 封装、透明12 1.3.6 抽象16 1.3.7 继承、扩展、覆盖17 1.3.8 组合19 1.3.9 多态、动态绑定22 1.4 UML语言简介24 1.4.1 用例图24 1.4.2 类框图25 1.4.3 时序图26 1.4.4 协作图27 1.4.5 状态转换图27 1.4.6 组件图28 1.4.7 部署图29 1.5 类之间的关系29 1.5.1 关联(Association)29 1.5.2 依赖(Dependency)31 1.5.3 聚集(Aggregation)31 1.5.4 泛化(Generalization)32 1.5.5 实现(Realization)32 1.5.6 区分依赖、关联和聚集关系33 1.6 实现Panel系统35 1.6.1 扩展Panel系统37 1.6.2 用配置文件进一步提高Panel系统的可维护性39 1.6.3 运行Panel系统40 1.7 小结41 1.8 思考题42 第2章第一个Java应用43 2.1 创建Java源文件43 2.1.1 Java源文件结构44

Java面向对象练习经典题

JA V A程序作业题 1、设计一个包含多个构造函数的类,并分别用这些构造函数实例化对象。 2、编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。 3、建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能。 4、编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。 5. 编写一个控制台应用程序,定义一个类MyClass,类中包含有public、private以及protected数据成员及方法。然后定义一个从MyClass类继承的类MyMain,将Main方法放在MyMain中,在Main方法中创建MyClass类的一个对象,并分别访问类中的数据成员及方法。要求注明在试图访问所有类成员时哪些语句会产生编译错误。 7.创建一个类包含有protected数据。在相同的文件里创建第二个类,用一个方法操纵第一个类里的protected数据 9 编写一个控制台应用程序,完成下列功能,并回答提出的问题。 1) 创建一个类A,在构造函数中输出“A”,再创建一个类B,在构造函数中输出“B”。 2) 从A继承一个名为C的新类,并在C内创建一个成员变量B。不要为C创建构造函数。 3) 在Main方法中创建类C的一个对象,写出运行程序后输出的结果。 4) 如果在C中也创建一个构造函数输出“C”,整个程序运行的结果又是什么? 10 编写一个控制台应用程序,完成下列功能,并写出运行程序后输出的结果。 1) 创建一个类A,在A中编写一个可以被重写的带int类型参数的方法MyMethod,并在该方法中输出传递的整型值加10后的结果。 2) 再创建一个类B,使其继承自类A,然后重写A中的MyMethod方法,将A中接收的整型值加50,并输出结果。 3) 在Main方法中分别创建类A和类B的对象,并分别调用MyMethod方法。 11. 创建一个类,它存储一个int数据成员MyNumber,并给该数据成员创建属性,当该数据成员被存储时,将其乘以100;当其被读取时,将其除以100。 12. 定义一个车辆(Vehicle)基类,具有Run、Stop等方法,具有Speed(速度)、MaxSpeed (最大速度)、Weight(重量)等字段。然后以该类为基类,派生出bicycle、car等类。并编

java类和对象的例子

1.实现简易计算器,分别实现两个整数、三个浮点数的加法运算.(用JAVA中的类和对象) 源码如下: package days;//包名自己修改 import java.util.Scanner;//注意别忘记导入这个包名了public class NumSum { public int add(int num1,int num2){ return num1+num2; } public double add(double num1,double num2,double num3){ return num1+num2+num3; } public static void main(String[] args) { // TODO Auto-generated method stub NumSum nc=new NumSum(); NumSum nc1=new NumSum();

//调用2个整数相加的方法 //Scanner是用键盘手动输入数字。 System.out.println("请用键盘手动输入两个整数:"); System.out.println(nc.add(new Scanner(System.in) .nextInt(),new Scanner(System.in).nextInt())); //调用3个浮点数相加的方法 System.out.println("请用键盘手动输入三个浮点数:"); System.out.println(nc1.add(new Scanner(System .in).nextDouble(), new Scanner(System.in).nextDouble( ), new Scanner(System.in).nextDouble())); } }

java类与对象的创建方法

类与对象的创建与使用方法 //声明RectTest类 class RectTest{ public static void main(String args[]){ Rect rect1=new Rect(); System.out.println("矩形1的信息"+rect1.toString()); Rect rect2=new Rect(33,44); System.out.println("矩形2的信息"+rect2.toString()); rect1 = rect2; System.out.println("矩形1的信息"+rect1.toString()); System.out.println("矩形1的周长: "+rect1.getPerimeter()); System.out.println("矩形1的面积: "+rect1.getArea()); System.out.println("矩形2的周长: "+rect2.getPerimeter()); System.out.println("矩形2的面积: "+rect2.getArea()); } } //声明矩形类Rect class Rect { private float length; //矩形的长度 private float width; //矩形的宽度 public Rect(){ //默认构造方法 length=0; width=0; } public Rect(float l, float w){ //带参数的构造方法 length=l; width=w; } public void setLength(float l){ //改变矩形的长度 length=l; } public float getLength(){ //得到矩形的长度 return length; } public void setWidth(float w){ //改变矩形的宽度 width=w; }

java面向对象程序设计(戴开宇译版)课本知识整理

第一章计算机、程序和java概述 1.程序设计就是创建(或者开发)软件,软件也称为程序。 2.计算机是存储和处理数据的电子设备。计算机包括硬件和软件两部分。 3.一台计算机是由以下几个主要的硬件组件构成的:中央处理器(CPU),内存(主存),存储设备(例如磁盘和光盘),输入设备(例如鼠标和键盘),输出设备(例如显示器和打印机),通信设备(例如调制解调器和网卡) 4.数据和电信号通过总线在计算机的各个部分之间传输。 5.中央处理器(CPU)是计算机的大脑。他从内存中获取指令,然后执行这些指令。CPU 通常由两部分组成:控制单位和算术/逻辑单元。控制单元用于控制和协调其他组件的动作。算术/逻辑单元用于完成数值运算(加减乘除法)和逻辑运算(比较)。 6.核是处理器中实现指令读取和执行的部分。 7.二进制数字系统中的数,称为比特(bit,二进制数) 8.计算机中字节(byte)是最小的存储单位。每个字节由8个比特构成。各种类型的数据(例如,数字和字符)都被编码成字节序列。 9.计算机的存储能力是以字节和多字节来衡量的。KB

《Java面向对象程序设计》(第2版)课后答案

Java面向对象程序设计 (编著耿祥义张跃平) 习题1 1.James Gosling 2. (1)使用一个文本编辑器编写源文件。 (2)使用Java编译器(javac.exe)编译Java源程序,得到字节码文件。 (3)使用Java解释器(java.exe)运行Java程序 3.Java的源文件是由若干个书写形式互相独立的类组成的。 应用程序中可以没有public类,若有的话至多可以有一个public类。 4.系统环境path D\jdk\bin; 系统环境classpath D\jdk\jre\lib\rt.jar;.; 5. B 6.Java源文件的扩展名是.java。Java字节码的扩展名是.class。 7. D 8.(1)Speak.java (2)生成两个字节码文件,这些字节码文件的名字Speak.class 和Xiti8.class (3)java Xiti8 (4)执行java Speak的错误提示 Exception in thread "main" https://www.360docs.net/doc/343462935.html,ng.NoSuchMethodError: main 执行java xiti8得到的错误提示 Exception in thread "main" https://www.360docs.net/doc/343462935.html,ng.NoClassDefFoundError: xiti8 (wrong name: Xiti8) 执行java Xiti8.class得到的错误提示 Exception in thread "main" https://www.360docs.net/doc/343462935.html,ng.NoClassDefFoundError: Xiti8/class 执行java Xiti8得到的输出结果 I'm glad to meet you 9.属于操作题,解答略。 习题2 1. D 2.【代码1】【代码2】错误//【代码3】更正为float z=6.89F; 3.float型常量后面必须要有后缀“f”或“F”。 对于double常量,后面可以有后缀“d”或“D”,但允许省略该后缀。4.public class Xiti4{ public static void main (String args[ ]){ char ch1='你',ch2='我',ch3='他'; System.out.println("\""+ch1+"\"的位置:"+(int)ch1); System.out.println("\""+ch2+"\"的位置:"+(int)ch2); System.out.println("\""+ch3+"\"的位置:"+(int)ch3); } } 5.数组名字.length 6.数组名字.length 7.【代码1】A,65 【代码2】-127

java中对象创建和初始化过程

?JAVA中对象创建和初始化过程 ? ?分析一下JAVA中对象创建和初始化过程中涉及的相关概念问题,java中栈(st ack)与堆(heap),对象、引用、句柄的概念。 @Author:ZJ 06-11-25 Blog: https://www.360docs.net/doc/343462935.html,/ 1.Java中的数据类型 Java中有3个数据类型:基本数据类型(在Java中,boolean、byte、short、int、lo ng、char、float、double这八种是基本数据类型)、引用类型和null类型。其中,引用类型包括类类型(含数组)、接口类型。 下列语句声明了一些变量: 以下是引用片段: int k ; A a; //a是A数据类型的对象变量名。 B b1,b2,…,b10000;// 假定B是抽象类或接口。 String s; 注意:从数据类型与变量的角度看,基本数据类型变量k、类类型变量a和s、抽象类或接口类型变量b(1万个),它们都是变量(标识符)。 2.关于句柄(handle) 为了区别引用类型的变量标识符和基本数据类型变量标识符,我们特别的使用Handle 来称呼引用类型的变量标识符。上面例子中b1至b10000、a、s都是Handle。Handle直观的看就是手柄、把手,我们采用计算机界常用的中文翻译“句柄”。 2.1【Windows编程中的】句柄的含义 句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。 如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是驻留在内存的。 如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟

《JAVA面向对象程序的设计》练习题库B

第一章Java 简介 1. 下面( )是JDK中的Java运行工具.(选择二项) A. javac B. javam C. java D. javar 【解析】A C 2. 选出在Java中有效的注释声明(选择二项) A.//This is a comment B.*/This is a comment C./This is a comment D./*This is a comment*/ 【解析】AD 3. 下面( )命令可用于编译Java程序.(选择一项) A. java B. javac C. appletviewer D. javadoc 【解析】B 4. 下面( )数据类型可用于main()方法中传递的参数. (选择一

项) A. String B. Integer C. Boolean D. Variant 【解析】A 5. 在屏幕上显示的消息正确的语句是(选择一项) A. System.out.println(“I am Java Expert”); B. system.out.println(“I am Java Expert”); C. System.Out.Println(“I am Java Expert”); D. System.out.println(‘I am Java Expert’); 【解析】A 6. Java编译器会将Java程序转换为(选择一项) A. 字节码 B. 可执行代码 C. 机器代码 D. 以上所有选项都不正确 【解析】A 7. Java源代码文件的扩展名为(选择一项) A. .class

B. .java C. . D. 以上所有选项都不正确 【解析】B 第二章Java语言基础 1. 在Java中,byte数据类型的围是(选择一项) A. -32767~32768 B. -32768~32767 C. -127~128 D. -128~127 【解析】D 2. 以下( )是合法的标识符(选择二项) A. Te1_num B. emp1 C. 8678 D.batch.no 【解析】AB 3. 下列代码的输出结果是(选择一项)

相关文档
最新文档