《Java技术》第二次作业计科1501赵健宇

(一)学习总结

  • 1.使用Eclipse关联jdk源代码,查看String类的equals()方法
    1079800-20170324204306330-1218157624.png
    equals()方法截图
    1079800-20170324204653736-1395666432.png
    “==”比较的是地址。equals方法他同样使用==号进行内存地址的比较。但是equals方法重写如果==号比较不相等,还会进行一下值的比较。
    所以equals方法具体的作用要看当前的那个类是如何实现重写父类中该方法的。
    简单说,equals方法比较两个对象的内容,==比较两个对象在内存中的首地址是否相同。

    ==的使用结果:

        String str1 = "hello";String str2 = new String("hello");String str3 = str2;String str4 = "hello";System.out.println("str1 == str2 --> " + (str1 == str2)); //FALSESystem.out.println("str1 == str3 --> " + (str1 == str3)); //falseSystem.out.println("str2 == str3 --> " + (str2 == str3));//true
    
      如果使用equals()则所有值都为true。
  • 2.构造方法用来对变量进行初始化的.相当于给变量赋值.
    如果你没定义构造方法,在每个类的定义当中,都默认有一个无参数的构造方法

       > 如    public Student(){};**构造方法的重载**(1)在Java中,允许在一个类中定义多个构造方法。(2)在创建对象时,系统会自动根据所调用的构造方法中包含的参数类型,个数,选择匹配的构造方法创建对象。
    public class Test {public static void main(String args[]) { Foo obj = new Foo();       }     
    }
    class Foo{int value;public Foo(int intValue){value = intValue;}
    }

    以上构造方法不能通过编译,如果你定义了一个有参的构造函数,为了保证正确性,系统不会创建无参构造函数,这时候,如果你还想允许无参构造,就必须显式的声明一个
    解决方法: Foo obj = new Foo(100);

  • 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"); } } }
    (a+b+c)为0.30000000000000004,不等于0.3。原因在于我们的计算机是二进制的。浮点数没有办法是用二进制进行精确表示。
    其实java的float只能用来进行科学计算或工程计算,在大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算。

        在使用BigDecimal类来进行计算的时候,主要分为以下步骤:1、用float或者double变量构建BigDecimal对象。2、通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。3、把BigDecimal对象转换成float,double,int等类型。转载说明 [**原文链接**](http://www.cnblogs.com/chenssy/archive/2012/09/09/2677279.html)

    经过修改

import java.math.BigDecimal;public class Test {public static void main(String args[]) {double a = 0.1;double b = 0.1;double c = 0.1;if ((Math.round(Math.add(a, b, c), 1)) == 0.3) {System.out.println("等于0.3");} else {System.out.println("不等于0.3");}}}
class Math{public static double add(double value1, double value2, double value3) {BigDecimal b1 = new BigDecimal(Double.valueOf(value1));BigDecimal b2 = new BigDecimal(Double.valueOf(value2));BigDecimal b3 = new BigDecimal(Double.valueOf(value3));return b1.add(b2).add(b3).doubleValue();//.add(b3)}public static double round(double d,int len){BigDecimal b1 = new BigDecimal(d);BigDecimal b2 = new BigDecimal(1);return b1.divide(b2, len,BigDecimal.ROUND_HALF_UP).doubleValue();}
}

运行结果:等于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;
}

经讨论
1079800-20170325102114783-1714013163.png

1079800-20170325102129908-1012335537.png

public class Test {public static void main(String[] args) {MyClass[] arr={new MyClass(),new MyClass(),new MyClass()};System.out.println(arr.length);arr[1].value=100;for(int i = 0;i<arr.length;i++){System.out.println(arr[i].value);}}
}
class MyClass{public int value=1; 
}
  • 5.在一个10000次的循环中,需要进行字符串的连接操作,那么,应该使用String类还是StringBuffer类,为什么?性能有差异吗?能否写出测试代码证明你的结论。(可查阅资料)
    用StringBuffer类,String的内容一旦声明就不可改变,只能改变string的引用地址,若改变次数过多,应该用StringBuffer。

      StringBuffer类中append()方法可以一直调用,并且返回一个StringBuffer类的实例。
public class Test {public static void main(String[] args) {StringBuffer buf = new StringBuffer();for(int i=0;i<50;i++){buf.append("hello!");}System.out.println(buf);}
}
  • 6.其他需要总结的内容。

1.java中数组必须指定长度,初始化数组的时候指定,例子:
int myint[]=new int[20];
int myint[];只是声明了一个数组变量而不是定义了一个数组 ,注意二者的区别

(二)实验总结

1.评分系统:一共10个评委,满分10分,假设有5个选手,分别由评委打分,去掉一个最高分和一个最低分后的平均分为该选手得分,将选手的得分从高到低进行输出。

程序设计思路:利用二维数组依次输入选手成绩,使用求最大,最小,平均值三个方法。最后排序。people值可以更换
问题1:计算选手最终得分
解决方案:用总成绩减去最大得分减去最小得分除8

public static double[] avg(int xuanshou[][], int people) {double[] grade = new double[people];for (int j = 0; j < xuanshou.length; j++) {for (int i = 0; i < xuanshou[j].length; i++) {grade[j] += xuanshou[j][i];}}for (int x = 0; x < people; x++) {int out = max(xuanshou, x) + min(xuanshou, x);grade[x] = grade[x] - out;grade[x] = grade[x] / 8;}return grade;}

2.Email验证:在各种应用中,需要对用户输入的email地址进行验证,编写一个方法,判断一个email地址是否有效。

程序设计思路:输入String类型,利用string方法查找判断
问题1:“@”“.”位置问题
解决方案:indexOf方法取得位置,判断位置前后

public static boolean jundge(String in) {int x = in.indexOf("@");int y = in.indexOf(".");if (in.endsWith("com") || in.endsWith("cn") || in.endsWith("net")|| in.endsWith("gov") || in.endsWith("edu")|| in.endsWith("org")) {if (x != -1 && y != -1 && x < y && x != 0) {return true;} else {return false;}} else {return false;}}

3.统计文件:输入一个字符串,包含各种文件类型的文件名。文件名之间用“,”分隔,要求将各个文件名的首字母大写后分别输出,并统计各种类型文件的文件个数。

程序设计思路:string的分割方法分离并记录文件类型

主要代码

String s[] = filename.split(",");String[] flags = new String[s.length];for(int i=0;i<s.length;i++){String sb = new String(s[i]);String str = sb.substring(0, 1).toUpperCase() + sb.substring(1);            System.out.print(str+"\t");         flags[i] = sb.substring((sb.indexOf(".")));}System.out.println();int jilu=0;for(int j=0;j<flags.length;j++){int F1 = 1;for(int k=j+1;k<flags.length;k++){if(flags[k].equals(flags[j])){F1++;jilu = k;}}   if(j==jilu){j++;}else{System.out.println(flags[j]+"个数为"+F1);}}}

4.身份证识别:公民身份证号码由十八位数字组成。从左至右依次为:六位地址码,八位出生日期码,三位顺序码和一位校验码。顺序码的奇数分配给男性,偶数分配给女性。

程序设计思路:输入身份证号码可能有x,用string类型,
问题1:身份证长度等于18
原因:不能大于不能小于
解决方案:

String ID = input.nextLine();if(ID.length()!=18){System.out.println("输入错误!");System.exit(0);}

问题2:判断地区问题
原因:地区太多不能用ifelse判断
解决方案:使用二维数组,将string的身份证转为int型。

        String[][] region1 = {{"北京","天津","河北","山西","内蒙"},{"辽宁","吉林","黑龙江"},{"上海","江苏","浙江","安徽","福建","江西","山东"},{"河南","湖北","湖南","广东","广西","海南"},{"重庆","四川","贵州","云南","西藏"},{"陕西","甘肃","青海","宁夏","新疆"}};String regionX = ID.substring(0, 1);String regionY = ID.substring(1, 2);System.out.println();try {int x = Integer.parseInt(regionX);int y = Integer.parseInt(regionY);for(int j= 0;j<region1.length;j++){for(int k= 0;k<region1[j].length;k++){if((x-1)==j&&(y-1)==k){System.out.println(region1[j][k]);}}}           } catch (NumberFormatException e) {e.printStackTrace();}

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

https://git.oschina.net/hebau_cs15/hebau-cs01ZJY

1079800-20170325181928815-1104075290.png

转载于:https://www.cnblogs.com/ai1045152332/p/6607551.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

注射php,UPDATE注射(mysqlphp)的两个模式

一.测试环境&#xff1a;OS:Windowsxpsp2php:php4.3.10(mysql4.1.9apache1.3.33二.测试数据库结构&#xff1a;-----start-----数据库:test----------------------------------------------------------------表的结构userinfo--CREATETABLEuserinfo(groudidvarchar(12)NOTNULL…

JUnit的内置Hamcrest Core Matcher支持

在用JUnit和Hamcrest改进assertEquals的文章中&#xff0c;我简要讨论了Hamcrest “ 核心 ”匹配器与JUnit的现代版本“结合”在一起的情况。 在那篇文章中&#xff0c;我特别关注了JUnit的assertThat&#xff08;T&#xff0c;Matcher&#xff09;静态方法与Hamcrest核心is()匹…

FormsAuthentication使用指南,实现登录

一般情况下&#xff0c;在我们做访问权限管理的时候&#xff0c;会把用户的正确登录后的基本信息保存在Session中&#xff0c;以后用户每次请求页面或接口数据的时候&#xff0c;拿到Session中存储的用户基本信息&#xff0c;查看比较他有没有登录和能否访问当前页面。Session的…

Java开发高性能网站需要关注的事

转自&#xff1a;http://www.javabloger.com/java-development-concern-those-things/ 近期各家IT媒体举办的业内技术大会让很多网站都在披露自己的技术内幕与同行们分享&#xff0c;大到facebook&#xff0c;百度&#xff0c;小到刚起步的网站。facebook&#xff0c;百度之类的…

mysql到oracle数据迁移,mysql数据迁移到oracle

mysql: utf-8字符集oracle: Al32UTF8步骤&#xff1a;1. 从mysql导出csv格式数据&#xff0c;导出时设置default_character_setgbk&#xff0c;否则会乱码2.上传至linux服务器(oracle服务器),用以下命令将windows的/r/n换成/r:sed -i "s//r//g" file3.将gbk编码转为u…

测试抽象类和模板方法模式

摘自Wikipedia&#xff0c;“模板方法定义了算法的程序框架。 子类可以覆盖一个或多个算法步骤&#xff0c;以允许不同的行为&#xff0c;同时确保仍然遵循总体算法。” 通常&#xff0c;此模式由两个或多个类组成&#xff0c;一个是提供模板方法&#xff08;非抽象&#xff09…

LoadRunner性能测试结果计数器指标说明

LoadRunner性能测试结果计数器指标说明 转载2015-09-23 09:57:13标签&#xff1a;loadrunner计数器针对性能测试结果分析过程中&#xff0c;面对大量的测试数据&#xff0c;反而感觉无从下手分析。今天我们就Windows操作系统计数器中的个别被监控对象进行简单的说明。 Memory: …

Elasticsearch之需要注意的问题(es和jdk版本)

&#xff08;1&#xff09;在使用java代码操作es集群的时候 要保证本地使用的es的版本和集群上es的版本保持一致。 &#xff08;2&#xff09;保证集群中每个节点的JDK版本和es基本配置一致 这个很简单&#xff0c;不多说。 &#xff08;3&#xff09;es集群中jdk版本不一致 …

oracle视图查询数据慢,8i查询DBA_FREE_SPACE视图极慢的问题

还是那套古老的8.1.7.4&#xff0c;在该系统上检查表空间使用情况的SQL运行缓慢&#xff0c;其SQL如下:SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",SPACE - NVL(FREE_SPACE, 0) "USED_SPACE(M)",ROUND((1 - NVL(FREE_SPACE, 0) / SPACE) * 100, 2) &q…

bzoj 4332:JSOI2012 分零食

描述 这里是欢乐的进香河&#xff0c;这里是欢乐的幼儿园。 今天是2月14日&#xff0c;星期二。在这个特殊的日子里&#xff0c;老师带着同学们欢乐地跳着&#xff0c;笑着。校长从幼儿园旁边的小吃店买了大量的零食决定分给同学们。听到这个消息&#xff0c;所有同学都安安静静…

并发–顺序线程和原始线程

我不久前参与了一个项目&#xff0c;该项目的报告流程如下&#xff1a; 用户会要求举报 报告要求将被翻译成较小的部分 每个零件的报告将基于零件/节的类型由报告生成器生成 组成报告的各个部分将重新组合成最终报告&#xff0c;并返回给用户 我的目标是展示如何从错误的实…

借贷期末余额 oracle,应交税费期末余额分别在借贷方表示什么

应交税费是负债类科目&#xff0c;有时期末余额会在借方&#xff0c;有时会在贷方。因此&#xff0c;小伙伴们在实际的账务处理工作中&#xff0c;一定要弄清楚两者的含义。为了帮助大家进行有更进一步的理解&#xff0c;小编再次汇总了应交税费期末余额分别在借贷方表示什么的…

Android学习——ListView的缓存机制

在使用ListView的时候&#xff0c;需要加载适配器和数据源&#xff0c;这篇文章主要介绍一下ListView的使用以及利用ListView的缓存机制来减少系统的初始化时间。 ListView的使用 ListView和ViewPager很类似&#xff0c;首先在ArrayList中存放数据源&#xff0c;并把它作为Adap…

C#基础 特殊集合(栈集合、队列集合、哈希表集合)

一、 栈: Stank,先进先出&#xff0c;一个一个赋值&#xff0c;一个一个取值&#xff0c;按照顺序。 .count 取集合内元素的个数 .push 将元素一个一个推入集合 .pop 将元素一个一个弹出集合 .peek 查看集合中的一个元素 .clear 清空集合 Stack stnew Stack…

OSGi环境中的Servlet基本身份验证

您首先需要获得对OSGI HTTP Service的引用。 您可以通过声明性服务来做到这一点。 这篇文章将集中在获得对HTTP服务的引用之后的步骤。 注意&#xff1a;此职位的完整课程位于此处 通过OSGI HTTP Service注册Servlet时&#xff0c;它为您提供了提供HTTPContext实现的选项。 htt…

linux夏令时配置文件,Linux夏令时是怎么调整的?

以法国巴黎为例&#xff1a;root121 zoneinfo]# ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime[root121 zoneinfo]# date2015年 10月 13日 星期二 03:45:09 CEST[root121 zoneinfo]# date -RTue, 13 Oct 2015 03:45:31 0200[root121 zoneinfo]# zdump -v /etc/localt…

Kali Linux渗透基础知识整理(二)漏洞扫描

Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量NmapHping3NessuswhatwebDirBusterjoomscanWPScan网络流量 网络流量就是网络上传输的数据量。 TCP协议 TCP是因特网中的传输层协议&#xff0c;使用三次握手协议建立连接。当主动方发出SYN连接请求后&#xff0c;等待…

嵌入式软件设计第09实验报告

学号&#xff1a;140201133 姓名&#xff1a;李宇昕 组别&#xff1a;第3组 实验地点&#xff1a;D19 一、实验目的&#xff1a; 1.熟悉WWW技术中的SSI&#xff08;Server Side Include&#xff09;技术。 2.学会使用SSI技术编写代码把当前开发板内…

TeamCity工件:HTTP,Ant,Gradle和Maven

您可以通过几种方式检索TeamCity工件&#xff1f; 我说有很多选择 &#xff01; 如果您使用的是Java构建工具&#xff0c;那么可以使用简单的HTTP请求&#xff0c;Ant Ivy&#xff0c;Gradle和Maven下载和使用TeamCity构建配置生成的二进制文件。 怎么样&#xff1f; 继续阅读…

linux中hadoop命令大全,hadoop常用命令

启动Hadoop进入HADOOP_HOME目录。执行sh bin/start-all.sh关闭Hadoop进入HADOOP_HOME目录。执行sh bin/stop-all.sh1、查看指定目录下内容hadoop dfs –ls [文件目录]eg: hadoop dfs –ls /user/wangkai.pt2、打开某个已存在文件hadoop dfs –cat [file_path]eg:hadoop dfs -ca…