java基礎1

来源:https://www.cnblogs.com/pengyupeng/archive/2019/07/20/11216309.html
-Advertisement-
Play Games

開篇:自己自學java拖拖拉拉的也有半年了,一學期里有很多事讓我停止學習java,轉眼間開學就要大四找工作了,想用一個暑假好好學習一些java,想掌握一門技術讓自己餓不死。本想每天寫一些筆記總結,發現那樣的話太費時間了,即便寫了,我自己都不看。最後,我決定還是以題的形式寫成文章,方便自己複習,同時也 ...


開篇:自己自學java拖拖拉拉的也有半年了,一學期里有很多事讓我停止學習java,轉眼間開學就要大四找工作了,想用一個暑假好好學習一些java,想掌握一門技術讓自己餓不死。本想每天寫一些筆記總結,發現那樣的話太費時間了,即便寫了,我自己都不看。最後,我決定還是以題的形式寫成文章,方便自己複習,同時也希望能幫助到有緣人。裡面的很多題目來源我收集到的各種資料,並非自己原創。我寫博客只是為了讓自己對知識有很深的理解,理清自己的思路,便於自己複習,並非用於商業用途。若涉及到侵權,請聯繫我,我刪除。

 

1.簡述String類中的equals方法與Object類中的equals方法的不同點。

答: String類中的equals方法是用來判斷兩個對象的內容是否相同,Object類中的equals方法是用來判斷兩個對象是否是記憶體的同一塊記憶體空間。

2.下列代碼運行結果

public class ToStringTest{
    static int i = 1;
    public static void main(String args[]){
        System.out.println("love " + new ToStringTest());//love java
        ToStringTest a = new ToStringTest();
        a.i++;
        System.out.println("aa " + a.i);//aa 2
    }
    public String toString(){
        System.out.print("I ");//I
        return "java ";
    }
}

I love java
aa 2

原因:當執行代碼的時候,首先載入靜態變數,然後執行main方法,由於main方法內部第一行代碼為輸出語句,裡面new了此類對象,當執行此行代碼時會先創建了本類的對象,由於此類重寫了toString方法,會先執行toString方法的列印輸出,然後返回“java ”,再執行main方法第一行列印輸出。在Java中“System.out.println(類對象名);”實際輸出的是該對象的toString()方法返回的字元串,即括弧中的內容等價於類對象名.toString(),toString方法的好處是在碰到println方法的時候會被自動調用,不用顯示的寫出來。

3.下列代碼運行結果

    (1)
        String s1 = new String("abc");
        String s2 = "abc";
        System.out.println(s1 == s2);         //false
        System.out.println(s1.equals(s2));         //true
    (2)
        String s1 = "abc";
              String s2 = "abc";
        System.out.println(s1 == s2);         //true
        System.out.println(s1.equals(s2));     //true
    (3)
        String s1 = "a" + "b" + "c";
              String s2 = "abc";
        System.out.println(s1 == s2);             //true
        System.out.println(s1.equals(s2));     //true
    (4)
        String s1 = "ab";
             String s2 = "abc";
             String s3 = s1 + "c";
        System.out.println(s3 == s2);         //false
              System.out.println(s3.equals(s2));       //true

4.簡述StringBuilder類與String類的區別。

答:String類的對象內容不可改變,所以每當進行字元串拼接時,總是會在記憶體中創建一個新的對象,所以經常改變內容的字元串最好不要用String,因為每次生成對象都會對系統性能產生影響。

StringBuilder又稱為可變字元序列,是JDK5.0中新增加的一個類,它是一個類似於String的字元串緩衝區,通過某些方法調用可以改變該序列的長度和內容。即它是一個容器,容器中可以裝很多字元串,並且能夠對其中的字元串進行各種操作。它的內部擁有一個數組用來存放字元串內容,進行字元串拼接時,直接在數組中加入新內容,StringBuilder會自動維護數組的擴容。

5.模擬在一副牌中,抽取第1張,第5張,第50張撲克牌。

    public class Test3 {
        public static void main(String[] args) {
            // 獲取所有撲克牌
            String[] puke = getPuke();
    
            // 抽取指定的三種撲克牌
            int num1 = 1;
            int num2 = 5;
            int num3 = 50;
            String[] pk3 = get3(puke , num1 ,num2,num3);
            // 列印抽取的牌
            for (int i = 0; i < pk3.length; i++) {
                System.out.print(pk3[i] + " ");
            }
        }
    
        private static String[] getPuke() {
    
            String[] colors={"黑色","紅桃","梅花","方塊"};
            String[] nums={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
    
            String[] puke = new String[54];
            int index = 0;
            for (int i = 0; i < nums.length; i++) {
                for (int j = 0; j < colors.length; j++) {
                  puke[index] = colors[j]+nums[i];
                    index ++;
                }
            }
            puke[52] = "小王";
            puke[53] = "大王";
    
            return puke;
    
        }
    
        public static String[] get3(String[] puke, int i, int i2, int i3) {
            String[] pk3 = new String[3];
            pk3[0] = puke[i - 1];
            pk3[1] = puke[i2 - 1];
            pk3[2] = puke[i3 - 1];
            return pk3;
        }
    }

6.獲取當前的日期,並把這個日期轉換為指定格式的字元串,如2088-08-08 08:08:08。

public class DateTest {
    public static void main(String[] args) {
        //獲取當前日期對象 now;
        Date now = new Date();
        //創建SimpleDateFormat對象 df,並制定日期格式
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //調用df的format(Date  date) 方法,傳入now; 接收返回的字元串
        String datestr = df.format(now);
        //列印這個字元串
        System.out.println(datestr);
    }
}

7.使用SimpleDateFormat類,把2018-05-04轉換為2018年05月04日。

public class DateFormatTest {
    public static void main(String[] args) throws ParseException {
        //創建SimpleDateFormat對象df1,指定日期模式為yyyy-MM-dd
        SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
        //調用df1的parse(String str)方法傳入2018-05-04,得到對應日期類型
        Date date = df1.parse("2018-05-04");
        //創建日期格式化對象df2,在獲取格式化對象時可以指定風格
        DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日");
        //調用df2的format(Date date) 傳入剛纔轉換的日期
        String str = df2.format(date);
        System.out.println(str);
    }
}

8.現有一個字元數組{'i','t','c','a','s','a'},請使用System類中的arraycopy()方法在控制台輸出“itcast”。(提示:將[1]號數組元素複製到最後位置並覆蓋原有元素。)

public class ArraycopyTest {
    public static void main(String[] args) {
        char[] cha ={'i','t','c','a','s','a'};
        //將cha數組中第2個元素,複製到目標數組最後一位數組上
        System.arraycopy(cha, 1, cha, 5, 1);
        //遍歷目標數組,在控制台輸出字元串
        for (int i = 0; i < cha.length; i++) {
            System.out.print(cha[i]);
    }
    }
}

9.用程式判斷2018年2月14日是星期幾

public class CalendarTest01 {
    public static void main(String[] args) {
        //創建Calendar對象
        Calendar c = Calendar.getInstance();
        //將給定的日曆欄位設置到Calendar對象中
        c.set(Calendar.YEAR, 2018);
        c.set(Calendar.MONTH, 1);
        c.set(Calendar.DATE, 14);
        //設置年
        int year = c.get(Calendar.YEAR);
        //設置月
        int month = c.get(Calendar.MONTH)+1;
        //設置日
        int date = c.get(Calendar.DATE);
        //設置星期
        char week = getWeek(c.get(Calendar.DAY_OF_WEEK));
        //輸出結果
        System.out.println(year+"年"+month+"月"+date+"日是星期"+week);
    }
    //定義方法,獲取星期漢字
    public static char getWeek(int a){
        char[] c = {' ','日','一','二','三','四','五','六'};
        return c[a];
    }
}

10.分析以下需求,並用代碼實現:

       (1)定義數字字元串數組{"010","3223","666","7890987","123123"};

       (2)判斷該數字字元串數組中的數字字元串是否是對稱(第一個數字和最後一個數字相等,第二個數字和倒數第二個數字是相等的,依次類推)的,並逐個輸出;

       (3)如:010 是對稱的,3223 是對稱的,123123 不是對稱的;

       (4)最終列印該數組中對稱字元串的個數。

public class StringBuilderTest02 {
    public static void main(String[] args) throws IOException {
        //定義數字字元串數組
        String[] str = {"010","3223","666","7890987","123123"};
        SBTest(str);
    }

    public static void SBTest(String[] str) {
        int count = 0;
        //遍歷定義的字元串數組
        for (String string : str) {
            //創建StringBuilder對象
            StringBuilder sb = new StringBuilder(string);
            //調用reverse()方法,將遍歷的數字進行反轉,然後用equals()方法對比是否與原數字相同
            if (sb.reverse().toString().equals(string)) {
                count++;
                System.out.println(string + "是對稱的");
            }
        }
        System.out.println("總數為" + count);
    }
}

 




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 插入節點 內部插入 所謂的內部插入,就是指在節點裡面的插入,而外部插入,則是在節點外面插入。 append() prepend() appendTo() prependTo() append和prepend是相反的 後面以 結尾的,參數為被插入內容的節點 append可以理解為尾部插入,prepen ...
  • 註:本文摘自李智慧的《大型網站技術架構》 1.初始階段的網站架構 小型互聯網公司一般在最初階段都是將:應用程式、資料庫、文件等所有的資源都在一臺伺服器上。通常伺服器操作系統使用Linux,應用程式使用PHP開發,然後部署在Apache上,資料庫使用MySQL,彙集各種免費開源軟體及一臺廉價伺服器就可 ...
  • 1.代碼生成器: [正反雙向](單表、主表、明細表、樹形表,快速開發利器)freemaker模版技術 ,0個代碼不用寫,生成完整的一個模塊,帶頁面、建表sql腳本、處理類、service等完整模塊2.多數據源:(支持同時連接無數個資料庫,可以不同的模塊連接不同數的據庫)支持N個數據源3.阿裡資料庫連 ...
  • 前言 最近工作中備受打擊,之前設計的很多程式都被老大否決,需要重構,讓我好好看看設計模式。之前對這一塊內容的確不怎麼重視,感覺枯燥無聊又派不上用場。後來沉下心來研究了一番... 我靠,原來如此,之前寫代碼的時候怎麼這麼傻逼,很多問題其實在一開始設計的時候就能避免。之前寫的都是些什麼鬼。 我們踩過的坑 ...
  • 架構雜談《五》 保證最終一致性的模式 在大規模、高併發服務化系統中,一個功能被拆分成多個具有功能單一的子功能,一個流程會有多個系統的多個單一功能的服務組合實現,如果使用兩階段提交協議和三階段提交協議,確實能解決系統間的一致性問題。其實現也比較複雜、成本比較高,最重要的是性能不夠好,相比來看,TCC協 ...
  • 前言 模式介紹 外觀模式相比較之下比較簡單,模式設計中定義是為子系統中的一組介面提供一個一致的界面,此模式定義了一個高層介面,這個介面是的這一子系統更加容易使用。 如果不理解呢,簡單些說就是外觀模式提供了為內部提供了同意的介面層,解耦了子系統和客戶端,這樣客戶端只需要知道外觀類存在即可,不需要知道具 ...
  • 第四章 分詞 下雨天留客天留我不留 本打算先介紹“簡單搜索”,對ES的搜索有一個直觀的感受。但在寫的過程中發現分詞無論如何都繞不過去。 查詢, 查詢都與分詞息息相關,索性先介紹分詞。 ES作為一個開源的搜索引擎,其核心自然在於搜索,而搜索不同於我們在MySQL中的 查詢語句,無論我們在百度搜索一個關 ...
  • [TOC] 一、分散式事務前奏 事務:事務是由一組操作構成的可靠的獨立的工作單元,事務具備ACID的特性,即原子性、一致性、隔離性和持久性。 本地事務:當事務由資源管理器本地管理時被稱作本地事務。本地事務的優點就是支持嚴格的ACID特性,高效,可靠,狀態可以只在資源管理器中維護,而且應用編程模型簡單 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...