Java 基础核心总结

内容来源于 https://github.com/crisxuan/bestJavaer

Java 概述

什么是 Java?

Java 是 Sun Microsystems 于1995 年首次发布的一种编程语言和计算平台。编程语言还比较好理解,那么什么是 计算平台 呢?

计算平台是在电脑中运行应用程序(软件)的环境,包括硬件环境软件环境。一般系统平台包括一台电脑的硬件体系结构、操作系统、运行时库。

Java 是快速,安全和可靠的。 从笔记本电脑到数据中心,从游戏机到科学超级计算机,从手机到互联网,Java 无处不在!Java 主要分为三个版本:

  • JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)

JavaSE 是 JavaEE 和 JavaME 的基础,JavaSE 就是基于 JDK 和 JRE,然后还包含了一些支持 Java Web 服务开发的类

  • JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)

JavaEE 一开始叫 J2EE,后来改名为 JavaEE,它是 JavaSE 的一个扩展,这是我们企业级开发使用的一个版本,包括一些 Java Web 工具包。

  • JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。

JavaME 一般用于移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。

Java 的特点

  • Java 是一门面向对象的编程语言

什么是面向对象?面向对象(Object Oriented) 是一种软件开发思想。它是对现实世界的一种抽象,面向对象会把相关的数据和方法组织为一个整体来看待。

相对的另外一种开发思想就是面向过程的开发思想,什么面向过程?面向过程(Procedure Oriented) 是一种以过程为中心的编程思想。

再举个例子:比如你是个学生,你每天去上学需要做几件事情?

起床、穿衣服、洗脸刷牙,吃饭,去学校。一般是顺序性的完成一系列动作。

class student {void student_wakeUp(){...}void student_cloth(){...}void student_wash(){...}void student_eating(){...}void student_gotoSchool(){...}
}

而面向对象可以把学生进行抽象,所以这个例子就会变为

class student(){void wakeUp(){...}void cloth(){...}void wash(){...}void eating(){...}void gotoSchool(){...}
}

可以不用严格按照顺序来执行每个动作。这是特点一。

  • Java 摒弃了 C++ 中难以理解的多继承、指针、内存管理等概念;不用手动管理对象的生命周期,这是特征二。
  • Java 语言具有功能强大和简单易用两个特征,现在企业级开发,快速敏捷开发,尤其是各种框架的出现,使 Java 成为越来越火的一门语言。这是特点三。
  • Java 是一门静态语言,静态语言指的就是在编译期间就能够知道数据类型的语言,在运行前就能够检查类型的正确性,一旦类型确定后就不能再更改,比如下面这个例子。
public void foo() {int x = 5;boolean b = x;
}

静态语言主要有 Pascal, Perl, C/C++, JAVA, C#, Scala 等。

相对应的,动态语言没有任何特定的情况需要指定变量的类型,在运行时确定的数据类型。比如有**Lisp, Perl, Python、Ruby、JavaScript **等。

从设计的角度上来说,所有语言的设计目的都是用来把人类可读的代码转换为机器指令。下面是一幅语言分类图。

动态语言是为了能够让程序员提高编码效率,因此你可以使用更少的代码来实现功能。静态语言设计是用来让硬件执行的更高效,因此需要程序员编写准确无误的代码,以此来让你的代码尽快的执行。从这个角度来说,静态语言的执行效率要比动态语言高,速度更快。这是特点四。

  • Java 具有平台独立性和可移植性

Java 有一句非常著名的口号: Write once, run anywhere,也就是一次编写、到处运行。为什么 Java 能够吹出这种牛批的口号来?核心就是 JVM。我们知道,计算机应用程序和硬件之间会屏蔽很多细节,它们之间依靠操作系统完成调度和协调,大致的体系结构如下

那么加上 Java 应用、JVM 的体系结构会变为如下

Java 是跨平台的,已编译的 Java 程序可以在任何带有 JVM 的平台上运行。你可以在 Windows 平台下编写代码,然后拿到 Linux 平台下运行,该如何实现呢?

首先你需要在应用中编写 Java 代码;

Eclipse 或者 javac 把 Java 代码编译为 .class 文件;

然后把你的 .class 文件打成 .jar 文件;

然后你的 .jar 文件就能够在 Windows 、Mac OS X、Linux 系统下运行了。不同的操作系统有不同的 JVM 实现,切换平台时,不需要再次编译你的 Java 代码了。这是特点五。

  • Java 能够容易实现多线程

Java 是一门高级语言,高级语言会对用户屏蔽很多底层实现细节。比如 Java 是如何实现多线程的。从操作系统的角度来说,实现多线程的方式主要有下面这几种

在用户空间中实现多线程

在内核空间中实现多线程

在用户和内核空间中混合实现线程

而我认为 Java 应该是在 用户空间 实现的多线程,内核是感知不到 Java 存在多线程机制的。这是特点六。

  • Java 具有高性能

我们编写的代码,经过 javac 编译器编译称为 字节码(bytecode),经过 JVM 内嵌的解释器将字节码转换为机器代码,这是解释执行,这种转换过程效率较低。但是部分 JVM 的实现比如 Hotspot JVM 都提供了 JIT(Just-In-Time) 编译器,也就是通常所说的动态编译

Java 基础核心总结相关推荐

  1. 清华学长免费分享Java基础核心知识大总结(1)

    自学Java,如果觉得看<Java编程思想>或者<Core Java>等之类的"圣经"觉得内容太多,一下子吃不透的话,不妨看看这本<Java基础核心总 ...

  2. Java七十四: Java基础/核心知识总结 — — “Java千字文”

    Java基础/核心知识总结 - - "Java千字文" Java基础/核心知识笔记终于完结,从Java语言诞生到jdk8新特性,共计74篇博文,43幅自制插图,35张表格,7万6千 ...

  3. Java基础核心总结(编辑中)

    Java概述 什么是Java? Java是Sun Microsystems于1995年首次发布的一种编程语言和计算平台.编程语言还比较好理 解,那么什么是计算平台呢? 计算平台是在电脑中运行应用程序( ...

  4. 清华学长免费分享Java基础核心知识点基础篇(2)

    Java编程作为入门比较容易的编程语言,发展前景很好,非常适合零基础的小白入门学习. 对所学知识点没有全面了解,学习的过程中容易进入误区,影响学习进度,成从入门到放弃.所以,今天播妞整理了一些适合小白 ...

  5. 【学习笔记】java基础核心总结

    记录:windows下查询端口占用 netstat -ano taskkill -pid 3648 -F netstat -ano | findstr 8082 基础部分 1.JDK的主要内容如下: ...

  6. Java 基础核心知识

    文章目录 1. Java必知 2. JVM 种类 3. JDK安装目录结构 4. Java特性 5. 常见疑点 6. 输入输出 7. 空串与NULL串 8. 基础代码 1. Java必知 Java于 ...

  7. Java基础核心之三大特性

    三大特性 一.三大特性 面向对象三大特性:封装.继承.多态. 封装: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 继承: 子类拥有父类的所 ...

  8. oppoJava面试!传智播客java基础案例教程

    零基础如何学习Java? 首先,你要明白一点,Java入门不难! 无论你是从事哪个行业,兴趣一定是最好的老师,也是你学习的动力. 学习方式1:自学 自学模式其实我个人不建议绝大部分的人选择,因为自学是 ...

  9. 这篇 Java 基础,我吹不动了

    Hey guys,这里是程序员cxuan,欢迎你收看我最新一期的文章,这篇文章我补充了一些关于<Java基础核心总结>的内容,修改了部分错别字和语句不通顺的地方,并且对内部类.泛型等内容进 ...

最新文章

  1. Android 为什么要有handler机制?handler机制的原理
  2. 教程系列——用模板快速上线一个HR 服务中心
  3. Oracle 并行查询
  4. java获取汉字的拼音首字母_java获取汉字的拼音首字母
  5. Too many input arguments.
  6. 艾伟:用 C# 实现带键值的优先队列
  7. Xshell6 + Xftp6 绿色破解永久授权激活版 免安装 解压即用,最好的SSH工具(Xshell 6 plus套件)
  8. 内存的工作原理及时序介绍
  9. android vivo oppo 真机调试 apk、安装失败,系统老是报“解析包时出现问题”
  10. 一个男朋友写给女朋友的信!爆笑(真勇敢)
  11. Hibernate的事务级别控制与查询对象的API(Query查询与Criterial查询+离线查询)
  12. s3c2440A操作24C08
  13. Mysql查询数据之基本和多条件查询
  14. input框不可编辑的三种方法
  15. wps自动图文集 重新编号_如何使用自动图文集在Microsoft Word中快速插入文本块
  16. 《Text Mining and Analytics》学习笔记——第一周
  17. java代码转换程序_怎么把java代码转换成程序
  18. 【学习方法】学习不好沉迷手机,该如何自救?3个高效学习方法,让你破除打压式管教的恶果!
  19. C++ 模板类的继承
  20. JAVA开发(分布式SpringCloud全家桶一些组件读法)

热门文章

  1. 《东周列国志》第三十二回 晏蛾儿逾墙殉节 群公子大闹朝堂
  2. 北京老家具修复服务器,涨知识:图解古旧家具修复的六个步骤
  3. java 随机金额_java_微信随机生成红包金额算法java版,最近几年玩得最疯狂的应该是 - phpStudy...
  4. 软件开发前言技术系列讲座
  5. [cv]郑哲东 Deep-ReID——Learn pedestrian representations from
  6. SOFA Weekly | SOFAJRaft 发布、SOFAJRaft 源码解析文章合集
  7. 7-12 编程实现两个分数相加
  8. 南华大学【软卓】【ACM协会】【其它学习生活方面】QA
  9. 作计算机报告用英语怎么写,计算机专业英语报告.doc
  10. STM32F407传输OV2640视频数据并在PC端显示