对于初学者学习java开发,开发工具选择-Mac

【Mac环境】对于初学者学习开发java开发,不同阶段敲代码工具选择,以及一些建议和java里的部分知识。[后端学习路线]

我其实也只是一个刚入门不久的小白,但是最近在看到许多大牛的博客之后,感觉一个牛人的开始还是要写写博客锻炼自己,我也产生了写博客的想法,因此此篇是本人的第一篇博客,如果有错误,或者不同的见解,欢迎直接评论,或者私聊我

1. 前期-这里的前期是指刚入门,也就是说从刚开始配置编译环境开始

在这个阶段:大家都处于刚开始建立良好的编码习惯的黄金时间,我更多的是建议大家使用文本编译器,在配置好自己的编码环境之后。通过文本编译器敲出自己的的java
上面这张图片则是我自身在除学java时使用文本编译器手敲的代码
有些小伙伴可能会问了:“我们老师直接用的IDEA,那不香嘛?”之类的话------这里我需要说明为什么前期建议大家尽量使用文本编译器来敲代码

  • 正如开始所说,养成一个良好的编码格式,刚开始养成的习惯很容易成为大家以后开发的习惯,任何一个良好的编码习惯都是从开始坚持下来,同理任何一个坏习惯都是不经意的习惯中养成的
  • 初学者前期不熟悉各类方法,多敲多练容易让大家掌握并熟练自己所学习的方法名,以及各个结构体。我在初学时候即使遇到相同结构的方法体,也不会c+v,而是手打一遍。
  • 训练自己的打字习惯,既然本篇文章是给初学者所说的,那么相信大家初学时并没有良好的打字习惯,甚至可能是二指禅(两个手的食指直接点完所有键)这里建议初学者在学习编码的同时,去学习敲键盘的正确指法,他能有效的提高你未来的敲码速度(另外,以后别人看你敲代码两个手指头按,别人会瞧不起你的)-----作者初学的时候是买了一个软件学习的Typing Mode
编译器推荐
  • Sublime Text(自己本人使用的文本编译器,洁面简介)
  • eclipse (界面听说挺丑,因为我自己用的是Sublime Text,所以没有了解过eclipse,只不过老师用的文本编译器是这个)

在前期的学习中,还是那句话,多敲多练,多做笔记!
在这里插入图片描述
也许你做笔记可能以后很少会看,但是做笔记这种习惯能为你培养一种归纳概括能力,以后即使有知识的遗忘,也能通过自己的笔记快速回顾

笔记以及代码存放位置

因为Mac取消了分盘,我们相比window用户也就少了份焦虑,作者这里是使用的2020年的intel的MacBook pro 256G,我在这里说明这个不是为了炫耀我自己所用的Mac,相信大家来看这篇文章也大部分都是用的mac,我只是想说明学习java真的不需要太大的空间,电脑不下电影,完全够用
在这里插入图片描述
自己的笔记以及代码存放在下载(/Download)中。几点原因:

  1. 自己在网上下载的安装包,因为都是直接出现来下载中,方便自己直接放入自己的分好类的文件中在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

例如:上方-我在学习JDBC以及javaweb时下载的jar包,都是从网站下载,并且直接放入自己的学习笔记代码文件夹中,以后在导入也方便通过类来找寻

  1. 分门别类的存放位置自己看着舒服,笔记都是学习中积累的知识,并且与当时学习该知识中所敲的代码息息相关,放在一起更方便自己理解当时学这个地方所get的知识点。
  2. 自己在敲自己的java代码的同时学会通过注释来解释写这段代码的意义,不知道该怎么写可以参考SUN公司写源码开发时的注释,如果英语差可自行翻译,看看大牛怎么写的注释,什么时候注释。在这里插入图片描述
    这里给大家随便找了下源码看看
学会看报错

在初学阶段,作者本人最怕的就是使用编译器然后终端编译时报错。说实话可能大部分初学者都对报错有着一种恐惧之心。每当看到一堆error,感觉头都要裂开。我也不例外,在刚开始学习的时候,每当出现报错,第一反应都是惊恐,不知道咋办。后来慢慢的跟着老师的步伐学会了看报错,只要不是配置环境问题,基本都能够自己解决大部分报错。

java中的异常机制

不仅如此,我们作为java工程师还要感谢java能提供一套异常系统,像我们老师所说,判断一个语言在某种意义上成熟与否,就要参考他是否有一套自己的的完善异常机制,一门语言,如果他在编写代码执行的时候,代码出问题了,他的控制台啥也不显示,那程序员根本不知道自己哪里有问题。java是一门很完善的语言,我们程序员在观察到异常消息之后,对程序进更改,增加了程序的健壮性。

2.前期中-这里的前期中是指在学到方法重载多态、不同类方法的调用的时候开始

这个阶段大家逐渐对基本的语法初步上手,这里就可以建议大家使用IDEA社区版本。

理由:

  • 此时的编写代码习惯已经在文本编译器前期完成。拥有了基本的编码能力,可以适当放松双手体验一下集成开发工具带来的便捷,以及强大的提示作用。
  • 其次这里不建议大家直接下载旗舰版,或则旗舰版的破解版,不仅仅是因为比较麻烦,在学习javaweb之前,旗舰版许多功能在你这个阶段的学习中根本用不到。如果用钱买年卡更是非常的贵。

这个阶段你将会学习到javase后期的所有知识
可能顺序不一定相同
这里大家会学习到一个非常难以接受的概念:抽象类与接口,初学者很难接受这里的概念,例如抽象类有啥用,有的人甚至会认为抽象类的作用就是抽象,为了抽象而抽象。

还会学到一些经典的算法问题:冒泡算法,二分法查找等等。
这里给大家看看我当时学时,怎样理解的冒泡算法
在这里插入图片描述
这里是代码实现 冒泡算法


int count=0;
        int count2=0;
        for(int i=arr.length-1;i>0;i--){
            for(int j=0;j<i;j++){
                count++;
                if(arr[j]>arr[j+1]){
                    int x = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1]=x;
                    count2++;
                }
            }
        }
        System.out.println("交换次数:"+count2);
        System.out.println("比较次数:"+count);
        for(int y=0;y<arr.length;y++){
            System.out.println(arr[y]);
        }
还会学到集合–这里会学到几种数据结构
  • 数组
  • 双向链表
  • HashMap(哈希表)
  • 红黑树

在学集合时,同样作者本人也了解了UML图的部分知识,并且自己画了一张集合的UML继承结构图,在这里给大家参考
在这里插入图片描述

我对IO流学习我认为,并没有刚接触多态时的难以理解,仅仅就只是一个模版的学习,以及调用方法的学习。这里遇到一个自己当时自己没法独立完成的任务

通过IO流完成拷贝目录,整个目录,包括目录中的文件。
这个学习任务用到了拷贝不同的文件需要用到不同的方法,以及我在这里用到了递归。总而言之对于当时的我来说实现难度很大。最终看着老师的方法一步一步慢慢理解。

如果有人对上述需求实现感兴趣的话,我会花时间单独做一篇,讲讲如何通过IO流实现目录拷贝

最后一大重要难点就是线程

其实线程的理解也比较抽象,这里也建议大家在学习线程的生命后期时候,配合图形来理解

多线程是所有java工程师面试必问的问题之一。

首先讲讲两个概念,进程线程

进程

进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。

线程

线程是一条执行路径,是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。

一个正在运行的软件(如百度网盘)就是一个进程,一个进程可以同时运行多个任务( 百度网盘可以同时下载多个文件,每个下载任务就是一个线程), 可以简单的认为进程是线程的集合。

关于进程与线程的关系

对于Java程序来说,在终端(DOS)命令窗口输入:
java HelloWord 回车之后。
会先启动JVM,而JVM就是一个进程。
JVM会再启动一个主线程调用main方法。
同时再启动一个垃圾回收线程负责看护,回收垃圾。
最起码,刚刚所说的操作中至少有3个线程并发
一个垃圾回收线程,一个是执行main方法的主线程。

  • 阿里巴巴:进程

    • 马云:阿里巴巴的一个线程
    • 童文红:阿里爸爸的一个线程
  • 京东

    • 强东:京东的一个线程
    • 奶茶妹妹:京东的一个线程

进程可以看做现实生活当中的公司。
线程可以看做公司当中的某一个员工。
进程A和进程B的内存独立不共享。(阿里巴巴和京东资源不会共享)
线程A和线程B:在java语言中,堆内存和方法区内存共享
但是栈内存独立,一个线程一个栈。

最后的反射机制,以及注解我不再赘述

都是一些需要记忆的死内容

3.初期末-这里指学习完MySqL数据库,JDBC之后,开始学习了解前端知识,并准备往后端,网站开发发展。

到了这阶段,回归正题,就该使用旗舰版的IDEA,不过我并不建议使用破解版:麻烦,并且不稳定,尊重版权思想。

我这里使用的则是随便在pdd或者淘宝,自己注册一个JETBrains账号,化十几块买一年的资格。一年十几的开销既不算太贵,同样也是正版。

由于初期末javaWeb的知识我也才学不久,也就没法给大家总结经验,不过以后会将自己在Servlet中遇到的问题,以及解决方法及时跟大家分享。

成功没有捷径之路,我始终相信多敲多练。

未完待续

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值