# 学习编程为了什么?学习编程有什么好处?学习编程不知道怎么学?
1.挣钱,兴趣,改变世界,解放双手(看个人)
2.学编程的人逻辑思维能力很强 ,无论做什么事情 没有逻辑思维是不行的
3.无论学习什么技能和知识 都是一步一步来的,没有一口吃成一个胖子的,学习编程一样 (实现一个功能都是一步一步实现的)
如何高效学习?
这篇博客写的很不错思路很清晰/值得刚学习看看
如何高效学习 · 语雀www.yuque.com给大家看一下我总结Java工程师知识图谱
Java简介和配置
一:java概述:
1991 年Sun公司的James Gosling(詹姆斯·高斯林)等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;
1994年将Oak语言更名为Java;
Java的三种技术架构:
JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;
JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;
JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;
1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。
2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
3,配置环境变量:让java jdkbin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:
1):永久配置方式:JAVA_HOME=%安装路径%Javajdk path=%JAVA_HOME%bin
2):临时配置方式:set path=%path%;C:Program FilesJavajdkbin
特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
classpath的配置:
1):永久配置方式:classpath=.;c:;e:
2):临时配置方式:set classpath=.;c:;e:
注意:在定义classpath环境变量时,需要注意的情况
如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;
如果指定了classpath,那么会在指定的目录下查找要运行的类文件。
还会在当前目录找吗?两种情况:
1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。
2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。
4,javac命令和java命令做什么事情呢?
要知道java是分两部分的:一个是编译,一个是运行。javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行.
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.
基础语法
JavaSE(基础)_XIXNGM的博客-CSDN博客blog.csdn.net面向对象
面向对象笔记 ------Sevenblog.csdn.net一、Java基础结构图
Java到底学什么?很多人可以刚学完Java时完全不知道Java的结构是怎样的,导致学习的知识点零星、散落,这也是为什么明明很基础的内容,但是一段时间之后自己却想不起来是怎么写的。没有梳理知识的脉络,将所学打通,融汇于一处。
这些是必会的【重点!】【重点!】【重点!】
二、JDK,JRE与JVM
JDK相当于一个工具包,为我们提供了开发Java程序的工具。
JRE则相当于一个API,为我们提供了核心类库,以及运行环境。
JVM是Java跨平台的核心,它可将代码翻译成对应OS可以识别的机器码。
三者之间的关系:
* JVM+JRE=JDK
三、两大核心机制
-- JVM
通过JVM运行Java程序,对底层运行平台的差别进行屏蔽,使Java可以跨平台使用。
- 垃圾回收机制
与C++不同,Java中不再使用的内存空间将会自动被回收。
四、集合
首先我看们看看集合结构图
思考一下集合与数组区别?
集合和数组的区别:
Collection集合的方法:
常用集合的分类:
Collection 接口的接口 对象的集合(单列集合)
├——-List 接口:元素按进入先后有序保存,可重复
│—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全
│—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全
│—————-└ Vector 接口实现类 数组, 同步, 线程安全
│ ———————-└ Stack 是Vector类的实现类
└——-Set 接口: 仅接收一次,不可重复,并做内部排序
├—————-└HashSet 使用hash表(数组)存储元素
│————————└ LinkedHashSet 链表维护元素的插入次序
└ —————-TreeSet 底层实现为二叉树,元素排好序
Map 接口 键值对的集合 (双列集合)
├———Hashtable 接口实现类, 同步, 线程安全
├———HashMap 接口实现类 ,没有同步, 线程不安全-
│—————–├ LinkedHashMap 双向链表和哈希表实现
│—————–└ WeakHashMap
├ ——–TreeMap 红黑树对所有的key进行排序
└———IdentifyHashMap
这里我们是必须要会的[重点] 在开发中 list ,ArrayList,Map,HashMap 用的的比较多
Set, 数据不可重复(比如做个航班查询和添加 我们坐飞机一般都会刷身份证 而身份证是唯一的我们买票的时候输入身份证这个时候我们用HashSet 身份证号就会重复啦)
List和Set集合详解:
1.list和set的区别:
2.List:
(1)ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素(2)LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素(3)Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素
Map详解:
Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。
(1)、请注意!!!, Map 没有继承 Collection 接口, Map 提供 key 到 value 的映射,你可以通过“键”查找“值”。一个 Map 中不能包含相同的 key ,每个 key 只能映射一个 value 。 Map 接口提供 3 种集合的视图, Map 的内容可以被当作一组 key 集合,一组 value 集合,或者一组 key-value 映射。
(2)Map:
(3)HashMap和HashTable的比较:
(4)TreeMap:
(5)Map的其它类:
IdentityHashMap和HashMap的具体区别,IdentityHashMap使用 == 判断两个key是否相等,而HashMap使用的是equals方法比较key值。有什么区别呢?
对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的地址。
对于equals方法,注意:equals方法不能作用于基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
基础先总结那么多:
每天总结一下自己学了什么,时间长了就会有成就感
总结:
1.Java基础语法
2.介绍Java JDK
3.环境配置
4.集合
5. 基础学的好,很重呀
喜欢就点个关注呗【反正也不要钱】
下一篇总结Web篇