个人java学习心得总结
學(xué)習(xí)心得
(第一次使用csdn的編輯器,很多功能不熟悉,慢慢學(xué),慢慢用把)
為什么決定走上java的道路
這次疫情應(yīng)該是導(dǎo)致我決定重新學(xué)java的主要原因。作為一名大三的學(xué)生,平時也沒有特別的愛好,也就偶爾打打游戲,彈彈吉他,追追劇,刷刷b站而已。當(dāng)然了也沒有什么特長,硬要說特長的話,也就游戲打的比別人好點。今年下半年就大四了,一想著平平無奇的自己又不是什么好學(xué)校出來的學(xué)生,也沒什么技術(shù),出到社會后那可能就真的怕飯都吃不飽。想著找一份本專業(yè)的工作,最好是工資高點的,因為這樣未來才有盼頭。可惜我看b站上面的很多面試的視頻和很多dalao的程序就覺得自己出去可能像個廢人,下定決心把java學(xué)懂,至少能達(dá)到中級工程師的水平。
學(xué)習(xí)感受
說真的,如果是我自己一人學(xué)習(xí)的話,沒有絕對的興趣真的學(xué)不下去,更不可能談得上去熟練掌握,所以我決定找個靠譜的地方學(xué)習(xí)。目前看來找到的可以說的上是靠譜。每天學(xué)習(xí)就把所有的時間占滿了,雖然野有生活方面的瑣事困擾了我一段時間,但至少能挺過來的都不是太大的問題。很多事情現(xiàn)在不經(jīng)歷,日后工作了也難免會遇到。
目前收獲
學(xué)到現(xiàn)在我覺得最大的改變就是知識體系的變化,我能夠明確感覺到我在看程序和寫程序的思路變了很多:之前是亂幾把寫,能編出來就行。現(xiàn)在的我至少會想著如何優(yōu)化程序,以面向?qū)ο蟮乃悸啡ゾ帉懸粋€程序,把重復(fù)的代碼放到一個方法中,調(diào)用方法就行。
然后就是了解了一點底層的原理,包括jvm虛擬機(jī)的運行,類創(chuàng)建的先后順序,堆棧大致是如何創(chuàng)建的,并且和程序的關(guān)聯(lián)。對象的創(chuàng)建過程,垃圾回收機(jī)制,調(diào)用方法和方法中的對象在jvm中的大致過程,
雖然確實對于底層這只是一點點,但是能摸到門檻就是好的。
慢慢的開始學(xué)著去看源碼,慢慢的看文檔了解java中真的是像海一般的方法和類,雖然也是才開始了解,先模門檻把,請叫我門檻戰(zhàn)神。說真的系統(tǒng)的學(xué)習(xí)知識真的是很有必要的,在大學(xué)根本沒學(xué)到過這種東西,教的東西太零零散散,而且自己也不會總結(jié)。
個人感覺,在學(xué)校學(xué)了點框架的知識后,重新重頭開始學(xué)有種很神奇的感覺,emm,就感覺為什么之前老師這樣講,好像明白了。包括面向?qū)ο蟮乃季S過程,,什么是單例模式,以及什么是構(gòu)造方法,什么是繼承,什么是封裝,什么是多態(tài),什么是實現(xiàn),什么是抽象,什么是接口,為什么要面對抽象編程,為什么要面向接口編程。就感覺很奇妙
具體內(nèi)容
(線上):學(xué)習(xí)了java基礎(chǔ),最終能用java寫一個小系統(tǒng)(不詳細(xì)寫了)
(線下)
java中提供的各種類和方法(已學(xué)):
String
Format
Exception
Scanner
Math
Timer
File
Date
Calendar
小程序
小型管理系統(tǒng)(代碼太多不列出)
定時關(guān)機(jī)小程序(圖形界面)
import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.util.Timer; import java.util.TimerTask;/*** @author Solar* @date 2020/6/30 0030 - 13:35*//*定時關(guān)機(jī)小程序*/ public class Power {{UI u = new UI();}private Runtime r = Runtime.getRuntime();/*** 啟動關(guān)機(jī)計劃*/public void start(int time){try {r.exec("shutdown -s -t "+ time);} catch (IOException e) {e.printStackTrace();}}/*** 取消關(guān)機(jī)計劃*/public void abort(){try {r.exec("shutdown -a");} catch (IOException e) {e.printStackTrace();}}class UI extends JFrame implements ActionListener{//關(guān)機(jī)按鍵private JButton btnStart;//取消按鍵private JButton btnCancel;//接收文本框private JTextField inputTime;private JLabel tips;private int overtime;public UI(){//設(shè)置標(biāo)題setTitle("定時開關(guān)小程序");//設(shè)置位置和大小setBounds(400,400,400,400);//設(shè)置當(dāng)前界面顯示的相對位置,設(shè)置null時,界面會在屏幕中水平垂直居中setLocationRelativeTo(null);//設(shè)置禁止窗口大小修改setResizable(false);//設(shè)置當(dāng)前窗口窗體總算在最頂層setAlwaysOnTop(true);//設(shè)置窗口關(guān)閉時結(jié)束進(jìn)程setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//初始化組件init();//設(shè)置可見setVisible(true);}private void init(){/* //設(shè)置布局(流式布局)setLayout(new FlowLayout());*/setLayout(null);tips = new JLabel("請設(shè)置關(guān)機(jī)的時間");tips.setBounds(20,20,240,30);inputTime = new JTextField();inputTime.setBounds(20,60,340,30);btnStart = new JButton("啟動任務(wù)");btnStart.setBounds(50,100,120,40);btnCancel = new JButton("取消任務(wù)");btnCancel.setBounds(220,100,120,40);add(tips);add(inputTime);add(btnStart);add(btnCancel);/* //為啟動按鈕綁定事件btnStart.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("Start按鈕點擊");}});btnCancel.addActionListener((e)->{System.out.println("Cancel按鈕點擊");});*/btnStart.setActionCommand("start");btnCancel.setActionCommand("cancel");//為啟動按鈕綁定事件(this關(guān)鍵字,多態(tài))btnStart.addActionListener(this);//為取消按鈕綁定事件btnCancel.addActionListener(this);}@Overridepublic void actionPerformed(ActionEvent e) {Timer timer = new Timer();String s = e.getActionCommand();if(s.equals("start")){String time = inputTime.getText();try {int t = Integer.parseInt(time);overtime=t;timer.schedule(new TimerTask() {@Overridepublic void run() {tips.setText("電腦將在"+ overtime-- +"秒后關(guān)機(jī)");}},0,1000);} catch (NumberFormatException ex) {tips.setText("請輸入正常的關(guān)機(jī)時間(秒)");}}if(s.equals("cancel")){abort();timer.cancel();tips.setText("計劃取消");}}} }刪除文件:
public class DeleteFile {public void deleteAllFile(File dir){File[] files = dir.listFiles();if(files !=null) {for (int i = 0; i < files.length; i++) {if (files[i].isDirectory()) {deleteAllFile(files[i]);}files[i].delete();}}}public static void main(String[] args) {File file = new File("F:\\2345Downloads");new DeleteFile().deleteAllFile(file);} }模擬紅包:
public class RedPacket1 {public void moneyPacket(double giveMoney,int sumPeople){//設(shè)置格式刷DecimalFormat fmt = new DecimalFormat("#.##");//拿到傳的錢double money = giveMoney;//設(shè)置比例數(shù)組int[] p = new int[sumPeople];//設(shè)置紅包數(shù)組BigDecimal[] peopleMoney = new BigDecimal[sumPeople];//設(shè)置分母int sumP = 0;//分母賦值for (int i = 0; i < p.length; i++) {p[i] = (int) (Math.random()*100+1);sumP += p[i];}//設(shè)置保底機(jī)制for (int i = 0; i < peopleMoney.length; i++) {String pm = "0.01";peopleMoney[i]=new BigDecimal(pm);}//保底后的金額money = money - 0.01*sumPeople;//設(shè)置每個人除保底外的分的金額BigDecimal[] b = new BigDecimal[sumPeople];for (int i = 0; i < b.length; i++) {String proportion = fmt.format((p[i]/(double)sumP)*money);b[i] = new BigDecimal(proportion);}for (int i = 0; i < sumPeople; i++) {peopleMoney[i].add(b[i]);}System.out.println(Arrays.toString(peopleMoney));}public static void main(String[] args) {RedPacket r = new RedPacket();r.moneyPacket(0.14,10);} }使用日期類做日歷
public class MyCalendar {private int year;private int mouth;public MyCalendar(int year, int mouth) {this.year = year;this.mouth = mouth;}public void ShowCalender(){Calendar c = Calendar.getInstance();c.set(Calendar.YEAR,year);c.set(Calendar.MONTH,mouth-1);c.set(Calendar.DAY_OF_MONTH,1);//獲取月份天數(shù)int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);//獲取第一天是星期幾int nowDOW = c.get(Calendar.DAY_OF_WEEK)-1;System.out.println("一\t二\t三\t四\t五\t六\t天");for (int i = 0; i < nowDOW-1; i++) {System.out.print("\t");}for (int i = 1; i <= maxDay; i++) {if(i<10){System.out.print("0"+i+"\t");}else {System.out.print(i+"\t");}if((i+nowDOW-1)%7==0){System.out.println("");}}}public static void main(String[] args) {new MyCalendar(2020,7).ShowCalender();} }結(jié)尾
差不多就這些了,因為確實信息量太大不好全部列出來,只能截取一段,而且類的筆記都是實踐中學(xué),邊學(xué)邊寫筆記太多了就不粘貼了,第一周大概就學(xué)了這些,基本老師講的都會了,進(jìn)度跟得上。希望接下來幾個月保持狀態(tài),好好學(xué),找到一份不錯的工作把。
共勉!!
(新人報道,不喜勿噴)
總結(jié)
以上是生活随笔為你收集整理的个人java学习心得总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分享memcache和memcached
- 下一篇: lighttpd,thttpd,shtt