当前位置:文档之家› Java基础作业详解及答案

Java基础作业详解及答案

Java基础语句作业详解及答案1.编写程序,用数组实现乘法小九九的存储和输出。

【提示:采用多个一维数组。

】public class Multipation {public static void main(String[] args) {// TODO Auto-generated method stubint x[][]=new int[9][9];for(int i=0;i<9;i++){for(int j=0;j<9;j++){if(i>=j){int m=i+1;int n=j+1;x[i][j]=m*n;System.out.print(m+"*"+n+"="+x[i][j]);}}System.out.println();}}}2. 定义一个类Student,属性为学号、姓名和成绩;方法为增加记录SetRecord和得到记录GetRecord。

SetRecord给出学号、姓名和成绩的赋值,GetRecord通过学号得到考生的成绩。

public class Student {/***@param args*/private int ID;private String name;private float score;public void SetRecord(int ID,String name,float score){this.ID=ID;=name;this.score=score;}public float getRecord(int ID){if(ID==this.ID)return this.score;elsereturn -1;}public static void main(String[] args) {// TODO Auto-generated method stubStudent s=new Student();s.SetRecord(0,"alex",100);float Sco=s.getRecord(0);System.out.print(Sco);}}3.给出上题中设计类的构造函数,要求初始化一条记录(学号、姓名、成绩)。

4.public class Student {5.6./**7.*@param args8.*/9.private int ID;10.private String name;11.private float score;12.13.Student(int ID,String name,float score){14.this.ID=0;="666";16.this.score=65;17.}18.public void SetRecord(int ID,String name,float score){19.this.ID=ID;=name;21.this.score=score;22.}23.public float getRecord(int ID){24.if(ID==this.ID)25.return this.score;26.else27.return -1;28.}29.30.public static void main(String[] args) {31.// TODO Auto-generated method stub32.Student s=new Student(0,"sdfs",12);33.//s.SetRecord(0,"alex",100);34.float Sco=s.getRecord(0);35.System.out.print(Sco);36.}37.}4. 编写程序,测试字符串“你好,欢迎来到Java世界”的长度,将字符串的长度转换成字符串进行输出,并对其中的“Java”四个字母进行截取,输出截取字母以及它在字符串中的位置。

public class StringTest {/***@param args*/public static void main(String[] args) {// TODO Auto-generated method stubString str="你好,欢迎来到Java世界";int length=str.length();char [] stringArr = str.toCharArray();//System.out.print(stringArr);for(int i=0;i<length;i++){//System.out.print(stringArr[i]);//System.out.print(stringArr[0]);if('J'==stringArr[i]){System.out.print(i);}}}}1. 自己设计一个坐标类,能提供以下方法如求当前坐标和其他坐标之间的距离等方法,要求所有变量为私有变量,并提供两个构造函数。

public class XYdistance {private int x;private int y;XYdistance(){setX(0);setY(0);}public void setX(int x) {this.x = x;}public int getX() {return x;}public void setY(int y) {this.y = y;}public int getY() {return y;}public static void main(String[] args) {// TODO Auto-generated method stubXYdistance m_1= new XYdistance();m_1.setX(10);m_1.setY(10);XYdistance m_2= new XYdistance();doubledistance=(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 stubnew 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 = "abc";创建过程分析:在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 = "abc";2.String s2 = "abc";3.System.out.println(s1 == s2);//true结果说明:JVM创建了两个引用str1和str2,但在String Pool中只创建了一个对象,而且两个引用都指向了同一个对象。

2、String s = new String("abc");创建过程分析:当执行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对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。

相关主题