博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java第二次实验作业
阅读量:6621 次
发布时间:2019-06-25

本文共 3933 字,大约阅读时间需要 13 分钟。

1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法,截图,并学习其实现方法。举例说明equals方法和==的区别。

1080029-20170327163714764-41405292.png

1080029-20170327163723764-1492964135.png

Eclipse关联jdk源代码的方法如上图所示

举例说明equals方法和==的区别

1080029-20170327163924420-1057812401.png

1080029-20170327163933654-449789922.png

如图所示 ‘==’比较的是字符的地址 而‘equals’比较的是字符串的内容

2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?

public class Test {

public static void main(String args[]) {
Foo obj = new Foo();
}
}
class Foo{
int value;
public Foo(int intValue){
value = intValue;
}
}

构造方法就是与类同名的那个方法,它的作用是可以用来初始化

重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。
构造方法可以重载。
上述程序并不能翻译 因为在Foo类中定义int型的value, Foo obj = new Foo()没有传递参数。 需要对Foo(int)进行传参。

3.运行下列程序,结果是什么?查阅资料,分析为什么。

public class Test {
public static void main(String args[]) {
double a = 0.1;
double b = 0.1;
double c = 0.1;
if((a + b + c) == 0.3){
System.out.println("等于0.3");
}else {
System.out.println("不等于0.3");
}
}
}
运行结果为不等于0.3
因为Java中的简单浮点数类型float和double不能够进行运算,在大多数情况下,计算的结果是准确的,但进行多次运算或者循环运算经常出错,double属于floating binary point types,也就是说都double型的数值在相加减的时候,会将数值转换成二进制的数值如10001.10010110011这种表示发再做相加减,但是在转换成二进制代码表示的时候,存储小数部分的位数会有不够的现象,即无限循环小数,这就是造成微差距的主要原因。
package org.lxh.demo11.numberdemo;
import java.math.BigDecimal;
public class BigDecimalDemo01 {

public static void main(String[] args) {     BigDecimal bi1=new BigDecimal ("0.1");    BigDecimal bi2=new BigDecimal ("0.1");    BigDecimal bi3=new BigDecimal ("0.1");    BigDecimal c= new BigDecimal("0.3");     bi2=bi1.add(bi1.add(bi1));    if(bi2.compareTo (c)==0){        System.out.println("等于0.3");    }else {        System.out.println("不等于0.3");    }}}

定义BigDecimal类 如上 结果等于0.3

4.运行下列程序,结果是什么?分析原因,应如何修改.

public class Test {
public static void main(String[] args) {
MyClass[] arr=new MyClass[3];
arr[1].value=100;
}
}
class MyClass{
public int value=1;
}

结果 不能运行

原因 空指针异常
更改方法
package org.lxh.demo11.numberdemo;
public class Test {
public static void main(String[] args) {
MyClass[] arr={new MyClass(),new MyClass(),new MyClass()
};
arr[1].value=100;
}
}
class MyClass{
public int value=1;
}
5.在一个10000次的循环中,需要进行字符串的连接操作,那么,应该使用String类还是StringBuffer类,为什么?性能有差异吗?能否写出测试代码证明你的结论。(可查阅资料)

首先 两种类的区别

(1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringBuffer类对象为可修改对象,可以通过append()方法来修改值
(2)String类对象的性能远不如StringBuffer类。
关于以上具体解释如下:
在java中有3个类来负责字符的操作。
1.Character 是进行单个字符操作的,
2.String 对一串字符进行操作。不可变类。
3.StringBuffer 也是对一串字符进行操作,但是可变类。
String类

String tempstr = "abcdefghijklmnopqrstuvwxyz";

int times = 10000;
long lstart1 = System.currentTimeMillis();
String str = "";
for (int i = 0; i < times; i++) {
str += tempstr;
}
long lend1 = System.currentTimeMillis();
long time = (lend1 - lstart1);
System.out.println(time);

String Buffer类

String tempstr = "abcdefghijklmnopqrstuvwxyz";

int times = 5000;
long lstart2 = System.currentTimeMillis();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < times; i++) {
sb.append(tempstr);
}
long lend2 = System.currentTimeMillis();
long time2 = (lend2 - lstart2);
System.out.println(time2);
由以上两个程序测试得出结论 StringBuffer 的速度几乎是String 上万倍当然这个数据不是很准确

6.其他需要总结的内容。

(二)实验总结

实验内容:

1.评分系统:一共10个评委,满分10分,假设有5个选手,分别由评委打分,去掉一个最高分和一个最低分后的平均分为该选手得分,将选手的得分从高到低进行输出。定义适当的方法。
设计思路: 定义数组循环按照逻辑依次循环,并在其中求出最大值最小值,最终值为去掉最大值最小值的平均值
问题一:得分输出不正确,随机值
解决方法:定义double数组 将每次得分成绩放入数组
public class test{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int score[]=new int[10];

int max=0;    int min=0;    int sum=0;    double arv=0;    System.out.println("请评委打分:");for(int i=1;i<5;i++){    System.out.println("请评委给第"+i+"选手打分:");        for(int q=0;q<10;q++){        int a=in.nextInt();        score[q]=a;    }    max=min=score[0];    for(int v=0;v
max){ max=score[v]; } if(score[v]

2.Email验证:在各种应用中,需要对用户输入的email地址进行验证,编写一个方法,判断一个email地址是否有效。(判断条件:A:@和.同时存在 B: @在.之前 C: 不能@开头 D: 以com|cn|net|gov|edu|org结尾 )

设计思路:定义地址成功与否的返回值条件 在按照题目要求定义条件

问题:“@”和“。”判断错误
解决方案:if((a!=-1&&b!=-1&&a<b&&a!=1)) 进行一次判断

解决方案:XXXXXXX

(三)代码托管(务必链接到你的项目)

1080029-20170327214505342-1602163286.png

https://git.oschina.net/hebau_cs15/java-cs01hm.git

学习进度条

1080029-20170327215206951-871477393.png

转载于:https://www.cnblogs.com/hm2546914025-/p/6629032.html

你可能感兴趣的文章
简单的mysql存储过程
查看>>
颜色系统
查看>>
限定修饰符const
查看>>
博客搭建攻略(一):平台选择
查看>>
[日推荐]『台湾景点大全』小编带你游台湾!
查看>>
ArrayList 的hashCode 和 equals
查看>>
LispWorks 加载带有中文字符的 lisp 源文件出错的处理办法
查看>>
Python爬虫实战(2):爬取京东商品列表
查看>>
查看rbd镜像存放osd的位置
查看>>
Junit
查看>>
理解RESTful架构
查看>>
ie6 jquery live change事件失效
查看>>
IBM SPSS Modeler Logistic回归分析详解
查看>>
显示Iframe指定位置
查看>>
UINavigationController详解与使用(二)页面切换和segmentedCon...
查看>>
liunx df -h
查看>>
生成树的冗余与负载分担技术
查看>>
js中addEventListener和on的区别
查看>>
PCRE 安装及使用(来自百度知道)
查看>>
centos 7 mysql
查看>>