《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.pswp.cn/news/372591.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372591.shtml
英文地址,請注明出處:http://en.pswp.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…