java基础知识

一、java特点

1. 跨平台性

所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。这是软件发展的趋势和编程人员追求的目标。之所以这样说,是因为计算机硬件的种类繁多,操作系统也各不相同,不同的用户和公司有自己不同的计算机环境偏好,而软件为了能在这些不同的环境里正常运行,就需要独立于这些平台。而在Java语言中, Java自带的虚拟机很好地实现了跨平台性。 Java源程序代码经过编译后生成二进制的字节码是与平台无关的,但是可被Java虚拟机识别的一种机器码指令。 Java虚拟机提供了一个字节码到底层硬件平台及操作系统的屏障,使得Java语言具备跨平台性。

2. 面向对象

面向对象是指以对象为基本粒度,其下包含属性和方法。对象的说明用属性表达,而通过使用方法来操作这个对象。面向对象技术使得应用程序的开发变得简单易用,节省代码。Java是一种面向对象的语言,也继承了面向对象的诸多好处,如代码扩展、代码复用等。

3. 安全性

安全性可以分为四个层面,即语言级安全性、编译时安全性、运行时安全性、可执行代码安全性。语言级安全性指Java的数据结构是完整的对象,这些封装过的数据类型具有安全性。编译时要进行Java语言和语义的检查,保证每个变量对应一个相应的值,编译后生成Java类。运行时Java类需要类加载器载入www jxzxmr net,并经由字节码校验器校验之后才可以运行。 Java类在网络上使用时,对它的权限进行了设置,保证了被访问用户的安全性。

4. 多线程

多线程在操作系统中已得到了最成功的应用。多线程是指允许一个应用程序同时存在两个或两个以上的线程,用于支持事务并发和多任务处理。 Java除了内置的多线程技术之外,还定义了一些类、方法等来建立和管理用户定义的多线程。

5. 简单易用

Java源代码的书写不拘泥于特定的环境,可以用记事本、文本编辑器等编辑软件来实现,然后将源文件进行编译,编译通过后可直接运行,通过调试则可得到想要的结果。

二、IDEA开发工具

http://t.csdn.cn/NU2aS 这篇文章讲的很详细,可参考这篇文章

值得一提:在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。一个 Project 可以有多个 Module。目前主流的大型项目都是分布式部署的,结构都是类似这种多 Module 结构。

 三、java基本语法

1.java数据类型

详细的java数据类型解释见链接dhttp://t.csdn.cn/F6PKd

2.流程控制

知识的搬运工:http://t.csdn.cn/JCUmq

3.集合

① List列表:有序,可重复

  1. ArrayList数组列表,有序,可重复,内部是通过Array实现。对数据列表进行插入、删除操作时都需要对数组进行拷贝并重排序。因此在知道存储数据量时,尽量初始化初始容量,提升性能。
  2. LinkedList双向链表,每个元素都有指向前后元素的指针。顺序读取的效率较高,随机读取的效率较低。
  3. Vector向量,线程安全的列表,与ArrayList一样也是通过数组实现的,不同的是Vector是线程安全的,也即同一时间下只能有一个线程访问Vector,线程安全的同时带来了性能的耗损,所以一般都使用ArrayList。
  4. Stack栈,后进先出(LIFO),继承自Vector,也是数组,线程安全的栈。但作为栈数据类型,不建议使用Vector中与栈无关的方法,尽量只用Stack中的定义的栈相关方法,这样不会破坏栈数据类型。
  5. ArrayQueue数组队列,先进先出(FIFO)

② Queue队列,有序、可重复

  1. ArrayDeque数组实现的双端队列,可以在队列两端插入和删除元素
  2. LinkedList也是双向链表
  3. PriorityQueue优先队列,数组实现的二叉树,完全二叉树实现的小顶堆(任意一个非叶子节点的权值,都不大于其左右子节点的权值)

③ Map映射 /字典,无序,键值对,键唯一

  1. HashMap哈希映射/字典,无序字典,键值对数据,key是唯一的,Key和Value都可以为null
  2. TreeMap红黑树实现的key->value融合,可排序,红黑树是一种自平衡二叉查找树。
  3. LinkedHashMap链表映射/字典,继承了hashmap的所有特性,同时又实现了双向链表的特性,保留了元素插入顺序。

④ Set集合,不可重复

  1. HashSet基于HashMap实现的集合,对HashMap做了一些封装。与HaspMap不同的是元素的保存为链表形式,插入数据时遍历链表查看是否有相同数据,有则返回false,没有则返回true.
  2. LinkedHashSet链表集合,继承自HashSet与LinkedHashMap相似,是对LinkedHashMap的封装。
  3. TreeSet红黑树集合,与TreeMap相似,是对TreeMap的封装。 

4.IO

File: 非流式IO 用来在Java内存中表示一个文件或目录。
RandomAcessFile: 随机访问流 只能对文件进行随机读写操作的访问。
FileInputStream / FileOutputStream:节点流,以字节为单位,直接操作 文件。
BufferedInputStream / BufferedOutputStream:处理流,将InputStream/OutputStream对象进行包装,增加缓存功能,提高读写效率。
ByteArrayInputStream / ByteArrayOutputStream:节点流,以字节为单位直接操作 字节数组对象。
ObjectInputStream / ObjectOutputStream:处理流,以字节为单位直接操作 对象。
DataInputStream / DataOutputStream:处理流,以字节为单位直接操作“基本数据类型与字符串类型”。
InputStreamReader / OutputStreamWriter:处理流,将字节流对象转换为字符流对象。
PrintStream:处理流,将OutputStream进行包装,可以方便的输出字符,更加灵活。
FileReader / FileWriter:节点流,以字节为单位直接对 文本文件 进行读写
BufferedReader / BufferedWriter:处理流,将Reader/Writer对象进行包装,增加缓存功能,提高读写操作。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

敲码的小陈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值