为了转行程序员而努力的第十五天

今天提前起了,对于每天一起床就感到难受的生活渐渐有些麻木了,迫切希望可以改变现状,但是只能默默忍受,然后沉下心来准备。过去习以为常地生活现在早已变成了一种奢侈,可惜当时不知道珍惜,跑去跟父母说,他们说,等你真的出去了,想到现在的生活,也会觉得奢侈,好像我的人生只能不停下坠,直到认命不再折腾为止。其实我不信,也没有办法说服自己就这样接受,如果别人无论如何都无法理解,就只能随他去了。

今天又被布置了新的工作,今后时间应该又会被压缩一部分,我还是会坚持做自己想做的事,哪怕不被认可,哪怕看不到希望,总好过什么都不做。有声课程因为价格原因不能参加,却也因此找到了价格低品质更好的替代品,目前还没有正式开始的想法,只是把小王子坚持读下去。

今日进度:

  1. 网课正式开始进入刷题部分,确保每行代码都弄懂了
  2. 克服对刷题的恐惧和心理阴影,在leetcode上用Java独立完成了第一道题,虽然借鉴了网课C++版的思路,但是没有参考任何现成的答案,虽然反复改了很久,但是其实真的没有想象的那么难,甚至没有花太多时间,只是在工作的间隙就完成了
  3. 坚持利用午休时间学习
  4. 准备结合网课和leetcode专题来学习,leetcode专题非常适合利用碎片化时间,如在地铁或等电梯的时间来学习和思考算法题
  5. 坚持在W3Cschool上学习Java,目前为止还好,弄懂了之前一直不懂,或者说蒙混过关的内容
  6. 坚持锻炼
  7. 坚持早起
  8. 坚持记录进度
  9. 坚持录声音
  10. 开始学习排版,现在这篇文章稍微好看一点了

学习笔记:

  1. 如何写好程序:明确变量的含义,维护循环不变量,小数据量调试,大数据量测试
  2. LeetCode 283

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:

  1. 必须在原数组上操作,不能拷贝额外的数组。
  2. 尽量减少操作次数。

思路说明:使用ArrayList,将非0的元素都复制出来,再用ArrayList覆盖输入数组前面的非0部分,将剩余部分置0,时间复杂度为O(N),空间复杂度为O(N)。

import java.util.ArrayList;
class Solution {
    public void moveZeroes(int[] nums) {
        ArrayList<Integer> nc = new ArrayList<Integer>();
        for(int i=0; i<nums.length; i++){
            if (nums[i] != 0){
                nc.add(nums[i]);
            }
        }
        
        for(int i=0;i<nc.size();i++){
            
            nums[i] = nc.get(i);
        
        }
        
        for(int j=nc.size();j<nums.length;j++){
            nums[j] = 0;
        }
    }
}
  1. Java的两大数据类型: 内置数据类型:Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
    引用数据类型:引用类型变量由类的构造函数创建,可以使用它们访问所引用的对象。这些变量在声明时被指定为一个特定的类型,比如Employee、Pubby等。变量一旦声明后,类型就不能被改变了。
  2. Java 语言支持的变量类型有: 局部变量:类的方法中的变量。 实例变量:独立于方法之外的变量,不过没有 static 修饰。 类变量:独立于方法之外的变量,用 static 修饰。
  3. 类变量被声明为 public static final 类型时,类变量名称必须使用大写字母。
  4. 如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致。
  5. Java 中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持4种不同的访问权限。 默认的,也称为 default,在同一包内可见,不使用任何修饰符。 私有的,以 private 修饰符指定,在同一类内可见。 公有的,以 public
    修饰符指定,对所有类可见。 受保护的,以 protected 修饰符指定,对同一包内的类和所有子类可见。
  6. 类中的 Final 方法可以被子类继承,但是不能被子类修改。
  7. final 类不能被继承,没有类能够继承 final 类的任何特性。
  8. 抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
  9. 一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。
  10. 抽象类可以包含抽象方法和非抽象方法。任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
  11. 序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机 (JVM) 跳过该特定的变量。
  12. volatile 修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
  13. 数组是列表的实现方式之一,数组中的元素在内存中是连续存储的,列表中的元素在内存中可能相邻,可能不相邻。

学习效率似乎比之前提高了一些,显然Java学起来比Excel更有动力,少听别人的评价,多听自己内心的声音,明天继续更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿达斯加

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值