(第一次使用csdn的编辑器,很多功能不熟悉,慢慢学,慢慢用把)
这次疫情应该是导致我决定重新学java的主要原因。作为一名大三的学生,平时也没有特别的爱好,也就偶尔打打游戏,弹弹吉他,追追剧,刷刷b站而已。当然了也没有什么特长,硬要说特长的话,也就游戏打的比别人好点。今年下半年就大四了,一想着平平无奇的自己又不是什么好学校出来的学生,也没什么技术,出到社会后那可能就真的怕饭都吃不饱。想着找一份本专业的工作,最好是工资高点的,因为这样未来才有盼头。可惜我看b站上面的很多面试的视频和很多dalao的程序就觉得自己出去可能像个废人,下定决心把java学懂,至少能达到中级工程师的水平。
说真的,如果是我自己一人学习的话,没有绝对的兴趣真的学不下去,更不可能谈得上去熟练掌握,所以我决定找个靠谱的地方学习。目前看来找到的可以说的上是靠谱。每天学习就把所有的时间占满了,虽然野有生活方面的琐事困扰了我一段时间,但至少能挺过来的都不是太大的问题。很多事情现在不经历,日后工作了也难免会遇到。
学到现在我觉得最大的改变就是知识体系的变化,我能够明确感觉到我在看程序和写程序的思路变了很多:之前是乱几把写,能编出来就行。现在的我至少会想着如何优化程序,以面向对象的思路去编写一个程序,把重复的代码放到一个方法中,调用方法就行。
然后就是了解了一点底层的原理,包括jvm虚拟机的运行,类创建的先后顺序,堆栈大致是如何创建的,并且和程序的关联。对象的创建过程,垃圾回收机制,调用方法和方法中的对象在jvm中的大致过程,
虽然确实对于底层这只是一点点,但是能摸到门槛就是好的。
慢慢的开始学着去看源码,慢慢的看文档了解java中真的是像海一般的方法和类,虽然也是才开始了解,先模门槛把,请叫我门槛战神。说真的系统的学习知识真的是很有必要的,在大学根本没学到过这种东西,教的东西太零零散散,而且自己也不会总结。
个人感觉,在学校学了点框架的知识后,重新重头开始学有种很神奇的感觉,emm,就感觉为什么之前老师这样讲,好像明白了。包括面向对象的思维过程,,什么是单例模式,以及什么是构造方法,什么是继承,什么是封装,什么是多态,什么是实现,什么是抽象,什么是接口,为什么要面对抽象编程,为什么要面向接口编程。就感觉很奇妙
(线上):学习了java基础,最终能用java写一个小系统(不详细写了)
(线下)
小型管理系统(代码太多不列出)
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();
}
}
差不多就这些了,因为确实信息量太大不好全部列出来,只能截取一段,而且类的笔记都是实践中学,边学边写笔记太多了就不粘贴了,第一周大概就学了这些,基本老师讲的都会了,进度跟得上。希望接下来几个月保持状态,好好学,找到一份不错的工作把。
共勉!!
(新人报道,不喜勿喷)