Java基础最全笔记(一)

Java基础最全笔记(一)

1.1.Java历史简述

  • 1991 年Sun公司的James Gosling詹姆斯•高斯林)等人开始开发名称为 Oak
    的语言,希望专攻计算机在家电产品上的嵌入式应用(如电视机顶盒、面包烤箱、移动电话等)。
  • 1995年将Oak语言更名为Java;
  • 2009年,甲骨文公司宣布收购Sun公司。

1.2. Java语言的特点

  1. 面向对象(封装,继承,多态);
  2. 平台无关性( Java 虚拟机实现平台无关性,一次编译,到处运行);
  3. 简单易学(与C语言的面向过程相比,Java的面向对象更接近人的语言习惯);
  4. 安全性,可靠性(Java中没有指针,程序员无法直接操作内存,而是把操作权限交给Java虚拟机,使程序不容易出现不容易出现内存泄漏和内存溢出问题。);
  5. 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 java的lang包提供一个Thread类本身就支持多线程);
  6. 编译与解释并存(Java编译生成字节码文件,交给Java虚拟机解释);

1.3. 面向对象与面向过程对比。

我们都知道Java的核心思想是面向对象,Java中万事万物皆对象,那么面向对象与面向过程有什么不同呢?

(1).面向过程

优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点: 没有面向对象易维护、易复用、易扩展。

(2).面向对象

优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
缺点: 性能比面向过程低。

1.4. Java平台的三个版本J2EE、J2SE、J2ME。

JavaSE:即Java标准版,主要用于开发和部署桌面、例如,Java应用程序开发平台Eclipse(常说的C\S架构)。
JavaEE:即Java企业版,主要针对企业应用的开发。例如,电商网站(常说的B\S架构)。
JavaME:即Java微型版,主要针对移动设备和嵌入式设备。例如,手机、PDA、电视机顶盒等等。

注:从JDK 5.0开始 J2EE 改名为 java EE,J2SE 改名为 java SE,J2ME 改名成 java ME。

1.5. JDK、JRE、JVM之间的区别于关系。

LZ身边很多Java程序员,虽然写了很久的代码,但问他们jre 和 jdk 之间有什么关系,jvm 又是什么东西,很多人都讲的不是特别清楚,作为一个合格的Java程序员了解这方面的基础理论知识是很必要的。

(1).三者之间的区别:

JDK:(Java Development Kit)即java的开发与运行环境,他除了包含完整的JRE之外,还包含了供开发者使用的工具包。
JRE:(Java Runtime Environment)即Java运行环境,非开发者只需要安装 JRE来运行程序, 它包含java运行的所需的类库+JVM(java虚拟机)。
JVM: (Java Virtual Machine) 即Java虚拟机, 当我们运行一个程序时,JVM 负责将字节码转换为特定机器代码,JVM 提供了内存管理/垃圾回收和安全机制等。这种独立于硬件和操作系统,正是 java 程序可以一次编写多处执行的原因。

(2).三者之间的关系

  1. 作为程序员,就必须安装JDK,因为其中包含Java开发工具包,同时也包含了JRE。
  2. 作为使用者,运行已经开发好的Java程序,只需要安装JRE。
  3. JVM和JRE的关系:JRE包含了JVM,JVM是运行Java程序的核心虚拟机,同时也包含了Java程序所需的环境支持
  4. 总结:JDK>JRE>JVM

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f08Pd1lS-1608169557584)(https://www.pianshen.com/images/372/137eb9b06bf0d35928330724a5d60f9c.png)]

1.6. 什么是Java环境变量?

  1. 环境变量的意义
    让java bin目录下的工具,可以在任意目录下运行,原理是将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
  2. JAVA_HOME
    1. 它指向jdk的安装目录,引用%JAVA_HOME%即可,避免每次引用都输入很长的路径串,方便第三方软件引用约定好的JAVA_HOME变量,保证程序正常运行。
  3. Path环境变量
    设置Path环境变量之后就可以在任何目录下执行javac/java等工具命令了。 系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
  4. ClassPath
    如果指定了classpath,那么会在指定的目录下查找要运行的类文件(JDK1.5后不需要配置

1.7. javac命令和java命令做什么事情呢?

java运行分两部分:一个是编译,一个是运行。
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。编译后生成class文件。
java:负责运行的部分.会启动jvm虚拟机,加载运行时所需的类库,并对class文件进行执行.

一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.

1.8. 什么是字节码,采用字节码的好处是什么。

首先我们来谈谈Java文件类型,一共有两种:

  1. 扩展名为Java,Java的源文件,编译之前的纯文本文件,用来储存Java源代码。

  2. 扩展名为class,Java 的类文件,编译之后的二进制文件,存储的是字节码

    也就是说编译后的.class文件存储就是字节码*。

    采用字节码的最大好处: 可以实现一次编译到处运行,也就是java的与平台无关性,它依靠不同平台的Java虚拟机将编译后的字节码解释成具体平台上的机器指令执行。

1.9. import java和javax有什么区别

刚开始的时候 JavaAPI 所必需的包是 java 开头的包,javax 当时只是扩展 API 包来说使用。然而随着时间的推移,javax 逐渐的扩展成为 Java API 的组成部分。但是,将扩展从 javax 包移动到 java 包将是太麻烦了,最终会破坏一堆现有的代码。因此,最终决定 javax 包将成为标准API的一部分。
所以,实际上java和javax没有区别。这都是一个名字。

1.10. Java和C++的区别

都是面向对象的语言,都支持封装、继承和多态
Java 不提供指针来直接访问内存,程序内存更加安全
Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
Java 有自动内存管理机制,不需要程序员手动释放无用内存

1.11.Java数据类型

  1. 基本数据类型
    在这里插入图片描述
  2. 引用类型
    类、接口类型、数组类型、枚举类型、注解类型。
  3. 区别
    基本数据类型 在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。

引用数据类型 在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。

1.12.Java访问修饰符

在这里插入图片描述

1.13. 字符型常量和字符串常量的区别

  1. 形式上: 字符常量是单引号引起的一个字符 字符串常量是双引号引起的若干个字符。
  2. 含义上: 字符常量相当于一个整形值( ASCII含义上: 字符常量相当于一个整形值( ASCII 值),可以参加表达式运算 字符串常量代表一个地址值(该字符串在内存中存放位置)。
  3. 占内存大小 字符常量只占2个字节 字符串常量占若干个字节(至少一个字符结束标志) (注意: char在Java中占两个字节)
    相当于一个整形值( ASCII 值),可以参加表达式运算 字符串常量代表一个地址值(该字符串在内存中存放位置)。
  4. 占内存大小 字符常量只占2个字节 字符串常量占若干个字节(至少一个字符结束标志) (注意: char在Java中占两个字节)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-71uMS7nC-1608169557590)(https://www.pianshen.com/images/549/fffc86a6796ef6a1eac75536078db945.png)]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值