第一范文网 - 专业文章范例文档资料分享平台

java练习题(含答案)

来源:用户分享 时间:2025/6/4 4:54:43 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

1. 自己设计一个坐标类,能提供以下方法如求当前坐标和其他坐标之间的距离等方法,要求所有变量为私有变量,并提供两个构造函数。

public class XYdistance {

public int getY() { }

public static void main(String[] args) {

// TODO Auto-generated method stub XYdistance m_1= new XYdistance(); m_1.setX(10); m_1.setY(10);

XYdistance m_2= new XYdistance(); double return y;

public void setY(int y) { }

this.y = y; public int getX() { }

return x; private int x; private int y; XYdistance(){ }

public void setX(int x) { }

this.x = x; setX(0); setY(0);

distance=(m_1.getX()-m_2.getX())*(m_1.getX()-m_2.getX())+(m_1.getY()-m_2.getY())*(m_1.getY()-m_2.getY()); }

}

double result=Math.sqrt(distance); System.out.println(result);

编写使用静态变量统计一个类产生的实例对象的个数的程序?

public class Static { private static int number; public Static(){ //number=number+1; ++number;

//System.out.println(++number);

}

public static void main(String[] args) { // TODO Auto-generated method stub new Static(); //m_1.Static();

System.out.println(Static.number); }

}

创建string对象过程的内存分配:

常量池(Constant Pool):指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。JVM虚拟机为每个被装载的类型维护一个常量池。常量池就是该类型所用到常量的一个有序集和,包括直接常量(String,Integer和 Floating point常量)和对其他类型,字段和方法的符号引用。对于String常量,它的值是在常量池中的。而JVM中的常量池在内存当中是以表的形式存在的, 对于String类型,有一张固定长度的CONSTANT_String_info表用来存储文字字符串值,注意:该表只存储文字字符串值,不存储符号引用。

1、String s = \

创建过程分析:在class文件被JVM装载到内存中,JVM会创建一块String Pool(String缓冲池)。当执行String s = “abc”;时,JVM首先在String Pool中查看是否存在字符串对象“abc”(如何查看呢?用equals()方法判断),如果已存在该对象,则不用创建新的字符串对象“abc”,而直接使用String Pool中已存在的对象“abc”,然后将引用s指向该对象;如果不存在该对象,则先在String Pool中创建一个新的字符串对象“abc”,然后将引用s指向String Pool中创建的新对象。

注意:使用“字符串常量”引号创建的字符串对象时,在编译期就已经确定将该对象存储到String Pool中了。因此,String s = “abc”只会在编译期,在String Pool中创建一个对象。

例如:

Java代码 1. String s1 = \ 2. String s2 = \

3. System.out.println(s1 == s2);//true

结果说明:JVM创建了两个引用str1和str2,但在String Pool中只创建了一个对象,而且两个引用都指向了同一个对象。

2、String s = new String(\

创建过程分析:当执行String s = new String(“abc”);时,JVM首先在String Pool中查看是否存在字符串对象“abc”,如果不存在该对象,则先在String Pool中创建一个新的字符串对象“abc”,然后执行new String(“abc”)构造方法,在Heap里又创建一个新的字符串对象“abc”(new出来的对象都放在Heap里面),并将引用s指向Heap中创建的新对象;如果已存在该对象,则不用创建新的字符串对象“abc”,而直接使用String Pool中已存在的对象“abc”, 然后执行new String(“abc”)构造方法,在Heap里又创建一个新的字符串对象“abc”,并将引用s指向Heap中创建的新对象。

注意:使用new String(“”)创建的字符串对象时,会在运行期创建新对象存储到Heap中。因此,new String(“abc”)创建字符串对象时,会创建2个对象,编译期在String Pool中创建一个,运行时Heap中创建一个。

这里使用了 Java代码 1. public String(String original)

这个构造方法,作用:初始化一个新创建的String对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。

由于Sring类是不可变的,因而不必使用该构造方法,除非需要original的显式副本。

例如:

Java代码 1. String s1 = new String(\ 2. String s2 = new String(\ 3. System.out.println(s1 == s2);//false

结果说明:只要是用new()来新建对象的,都会在堆(Heap)中创建,而且其字符串是单独存值的,即使与String Pool中的数据相同,也不会与String Pool中的数据共享。

例程1: Java代码 1. String s1 = \ 2. String s2 = \

3. String s3 = \编译期自动优化为String s3 = \

4. System.out.println(s1 == s2); 5. System.out.println(s1 == s3); 6. System.out.println(s2 == s3);

运行结果: true true true

结果说明:字符串常量生成的字符串对象在String Pool中只有一个拷贝,且它

搜索更多关于: java练习题(含答案) 的文档
java练习题(含答案).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3jg5x5qebh7u3cm9b9nu86wqu5roxb0036f_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top