个人java学习心得总结

    技术2026-01-06  8

    学习心得

    (第一次使用csdn的编辑器,很多功能不熟悉,慢慢学,慢慢用把)

    为什么决定走上java的道路

    这次疫情应该是导致我决定重新学java的主要原因。作为一名大三的学生,平时也没有特别的爱好,也就偶尔打打游戏,弹弹吉他,追追剧,刷刷b站而已。当然了也没有什么特长,硬要说特长的话,也就游戏打的比别人好点。今年下半年就大四了,一想着平平无奇的自己又不是什么好学校出来的学生,也没什么技术,出到社会后那可能就真的怕饭都吃不饱。想着找一份本专业的工作,最好是工资高点的,因为这样未来才有盼头。可惜我看b站上面的很多面试的视频和很多dalao的程序就觉得自己出去可能像个废人,下定决心把java学懂,至少能达到中级工程师的水平。

    学习感受

    说真的,如果是我自己一人学习的话,没有绝对的兴趣真的学不下去,更不可能谈得上去熟练掌握,所以我决定找个靠谱的地方学习。目前看来找到的可以说的上是靠谱。每天学习就把所有的时间占满了,虽然野有生活方面的琐事困扰了我一段时间,但至少能挺过来的都不是太大的问题。很多事情现在不经历,日后工作了也难免会遇到。

    目前收获

    学到现在我觉得最大的改变就是知识体系的变化,我能够明确感觉到我在看程序和写程序的思路变了很多:之前是乱几把写,能编出来就行。现在的我至少会想着如何优化程序,以面向对象的思路去编写一个程序,把重复的代码放到一个方法中,调用方法就行。 然后就是了解了一点底层的原理,包括jvm虚拟机的运行,类创建的先后顺序,堆栈大致是如何创建的,并且和程序的关联。对象的创建过程,垃圾回收机制,调用方法和方法中的对象在jvm中的大致过程, 虽然确实对于底层这只是一点点,但是能摸到门槛就是好的。 慢慢的开始学着去看源码,慢慢的看文档了解java中真的是像海一般的方法和类,虽然也是才开始了解,先模门槛把,请叫我门槛战神。说真的系统的学习知识真的是很有必要的,在大学根本没学到过这种东西,教的东西太零零散散,而且自己也不会总结。 个人感觉,在学校学了点框架的知识后,重新重头开始学有种很神奇的感觉,emm,就感觉为什么之前老师这样讲,好像明白了。包括面向对象的思维过程,,什么是单例模式,以及什么是构造方法,什么是继承,什么是封装,什么是多态,什么是实现,什么是抽象,什么是接口,为什么要面对抽象编程,为什么要面向接口编程。就感觉很奇妙

    具体内容

    (线上):学习了java基础,最终能用java写一个小系统(不详细写了) (线下)

    java中提供的各种类和方法(已学):
    String
    Format
    Exception
    Scanner
    Math
    Timer
    File
    Date
    Calendar
    小程序

    小型管理系统(代码太多不列出)

    定时关机小程序(图形界面)
    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 */ /* 定时关机小程序 */ public class Power { { UI u = new UI(); } private Runtime r = Runtime.getRuntime(); /** * 启动关机计划 */ public void start(int time){ try { r.exec("shutdown -s -t "+ time); } catch (IOException e) { e.printStackTrace(); } } /** * 取消关机计划 */ public void abort(){ try { r.exec("shutdown -a"); } catch (IOException e) { e.printStackTrace(); } } class UI extends JFrame implements ActionListener{ //关机按键 private JButton btnStart; //取消按键 private JButton btnCancel; //接收文本框 private JTextField inputTime; private JLabel tips; private int overtime; public UI(){ //设置标题 setTitle("定时开关小程序"); //设置位置和大小 setBounds(400,400,400,400); //设置当前界面显示的相对位置,设置null时,界面会在屏幕中水平垂直居中 setLocationRelativeTo(null); //设置禁止窗口大小修改 setResizable(false); //设置当前窗口窗体总算在最顶层 setAlwaysOnTop(true); //设置窗口关闭时结束进程 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //初始化组件 init(); //设置可见 setVisible(true); } private void init(){ /* //设置布局(流式布局) setLayout(new FlowLayout());*/ setLayout(null); tips = new JLabel("请设置关机的时间"); tips.setBounds(20,20,240,30); inputTime = new JTextField(); inputTime.setBounds(20,60,340,30); btnStart = new JButton("启动任务"); btnStart.setBounds(50,100,120,40); btnCancel = new JButton("取消任务"); btnCancel.setBounds(220,100,120,40); add(tips); add(inputTime); add(btnStart); add(btnCancel); /* //为启动按钮绑定事件 btnStart.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("Start按钮点击"); } }); btnCancel.addActionListener((e)->{ System.out.println("Cancel按钮点击"); });*/ btnStart.setActionCommand("start"); btnCancel.setActionCommand("cancel"); //为启动按钮绑定事件(this关键字,多态) btnStart.addActionListener(this); //为取消按钮绑定事件 btnCancel.addActionListener(this); } @Override public 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() { @Override public void run() { tips.setText("电脑将在"+ overtime-- +"秒后关机"); } },0,1000); } catch (NumberFormatException ex) { tips.setText("请输入正常的关机时间(秒)"); } } 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){ //设置格式刷 DecimalFormat fmt = new DecimalFormat("#.##"); //拿到传的钱 double money = giveMoney; //设置比例数组 int[] p = new int[sumPeople]; //设置红包数组 BigDecimal[] peopleMoney = new BigDecimal[sumPeople]; //设置分母 int sumP = 0; //分母赋值 for (int i = 0; i < p.length; i++) { p[i] = (int) (Math.random()*100+1); sumP += p[i]; } //设置保底机制 for (int i = 0; i < peopleMoney.length; i++) { String pm = "0.01"; peopleMoney[i]=new BigDecimal(pm); } //保底后的金额 money = money - 0.01*sumPeople; //设置每个人除保底外的分的金额 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); //获取月份天数 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(); } }

    结尾

    差不多就这些了,因为确实信息量太大不好全部列出来,只能截取一段,而且类的笔记都是实践中学,边学边写笔记太多了就不粘贴了,第一周大概就学了这些,基本老师讲的都会了,进度跟得上。希望接下来几个月保持状态,好好学,找到一份不错的工作把。

    共勉!! (新人报道,不喜勿喷)

    Processed: 0.022, SQL: 9