Java核心技术阅读笔记(一)Java程序设计概述

一、Java程序设计概述

目录
1.1 Java程序设计平台
1.2 Java白皮书的关键术语
1.3 Java applet与Internet
1.4 Java发展简史
1.5 关于Java的常见误解

1.1 Java程序设计平台

Java是一个完整的平台,有一个庞大的库,其中有很多可重用代码,以及一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。

1.2 Java白皮书的关键术语

关键术语相关理解
简单性相对于C++来说少了很多很少使用难易理解的特性,这些特性带来的不便要远大于带来的便利性,没有头文件、指针、结构、联合、操作符重载、虚基类等。
面向对象注重数据和对象的接口,注重抽象,和C++不同在于没有多重继承,以接口取代
分布式链接web服务器
健壮性早期的问题检测、后期动态(运行时)的检测,以及消除容易出错的情况,Java与C++最大的不同在于Java采用的指针模型可以消重写内存和损坏数据的可能性。java可以检测出其他语言的代码只能在运行时才能检测出的错误
安全性在设计之初就能防范各种攻击:运行时堆栈溢出(很多病毒和蠕虫的攻击手段)、破坏自己进程空间之外的内存、未经授权读取文件
体系结构中立体系结构中立主要考Java虚拟机来实现,Java程序首先编译成虚拟机可接受的字节码文件,而字节码是与系统结构无关的,只要是有Java可运行的虚拟机环境就可以在各种平台上运行Java程序,可以把Java虚拟机看成一个层次,它可以将字节码文件翻译成本机的机器代码执行,Java将最常使用的指令翻译成机器代码实现叫做【即时编译】,而且Java虚拟机还可以在检测指令序列的行为监控其安全性
可移植性可移植性的实现更多的依赖于数据的格式是固定的,这样就避免了很多移植过程会出现的可能性,基本数据类型的大小和相关运算都有明确的说明,而且不仅Java程序是可移植的,Java API也比原生API的质量要好
解释型Java解释器可以在任何移植了Java解释器的地方运行Java字节码
高性能字节码可以在运行时动态的转换成对应这个应用特定的机器代码;即时编译可以提供更多的有效信息——监控频繁执行的代码并进行优化;消除函数调用(内联);即时编译器知道哪些类已经被加载如果一个特定的函数不会被覆盖就会实施内联,必要的时候也可取消
多线程多线程可以带来更快的响应和实时行为,由于摩尔定律,对于更强大的处理器性能的追求要小于如何让更多的处理器同时协调工作
动态性为正在进行的程序动态的添加代码,很容易的实现程序的演进

1.3 Java applet与Internet

Java applet是运行在网页上的Java程序,只需一个可以启用Java的浏览器即可运行,applet会插入成为页面的一部分,可以动态的和用户交互。

1.4 Java发展简史

  1. 最初是想设计一种小型的计算机语言,主要用于像有线电视机转换盒这类消费设备,需要代码短小,紧凑且与平台无关。——Green项目
  2. Java的三个版本:
  • Standard Edition
  • Micro Edition
  • Enterprise Edition
  1. Java 5.0是自1.1以来对Java语言作出重大改进的版本,增加了泛型类型(generic type),其挑战性在于添加这一特性而不对虚拟机进行任何的修改。还增加了几个语言特性:for each循环、自动装箱拆箱和注解。
  2. Java 8近20年改动最大的版本,增加了函数式编程。
  3. Java 9引入模块

1.5 Java常见误解

  1. Java是一种HTML的扩展
    HTML是一种描述网页结构的方式,Java是一种程序设计语言,二者除了在网页上放置Java applet的HTML扩展之外没有任何关系。
  2. 使用XML,所以不需要Java
    XML是一种描述数据的方式,可以使用任何一种语言去处理XML数据
  3. 程序设计语言的成功更多地取决于其支撑系统的能力,而不是语言的精巧性。
  4. JavaScript是Java的简易版
    JavaScript是一种可以在网页中使用的脚本语言,Java是强类型的,编译器能捕获类型滥用导致的很多错误,而在JavaScript中,只有当程序运行时才能发现这些错误,所以消除错误更费劲。

二、Java程序设计环境

目录

  1. 安装Java开发工具包
  2. 使用命令行工具
  3. 使用集成开发环境
  4. JShell

2.1 安装Java开发工具包

相关术语解释
Java Development Kit(Java开发工具包)JDK:编写Java程序的程序员使用的软件
Java Runtime Environment(Java运行时环境)JRE:运行Java程序的用户使用的软件(只包含虚拟机,只是可以运行)
Server JRE(服务器JRE)在服务器上运行Java程序
Standard Edition(标准版)用于桌面或简单服务器应用的Java平台
Enterprise Edition(企业版)用于复杂服务器应用的Java平台
Micro Edition(微型版)用于小型设备的Java平台
Java FX用于图形化用户界面的一个备选工具包,在Java 11之前的JavaSE的某些版本中提供
OpenJDKJavaSE的一个免费开源实现
Software Development Kit (软件开发工具包)SDK:一个过时的术语用于描述1998~2006年之间的JDK
  • 只维护64位的,需要64位系统
  • 需要下载JDK而不是JRE
  • 对于Linux可以砸RPM文件和.tar.gz文件中选择,建议使用后者
    对于Mac:/Library/Java/JavaVirtualMachines/jdk-11.0.x.jdk/Contents/Home会把JDK安装在这个目录之下,安装JDK时,还需要另外完成一个步骤:将jdk/bin目录添加到可执行路径中。

2.2 使用命令行工具

常用命令行解释
javacjavac welcome.java 编译Java文件生成.class字节码文件
javajava welcome 执行生成的Java字节码文件
javap反汇编查看字节码文件,还有相应的选项可以查看有关信息

常见错误汇总:

1. Bad command or file name/javac:command not found
//反复检查安装是否有问题,特别是可执行路径的设置
2. java.lang.NoClassDefFoundError 
//检查出错的类型名,如果收到了welcome的错误消息说明类名没有大写,如果收到了Welcome/java的错误消息说明错误的键入了java Welcome.java
3. java + classname 没有找到类
//检查是否有人设置了系统的CLASSPATH环境变量
4. 如果javac报告一个错误无法找到Welcome.java应该检测目录中是否有这个文件

2.3 使用集成开发环境

IDEA

2.4 JShell

JShell程序提供了一个“读取-计算-打印循环”的模式。
直接在终端中输入jshell启动JShell
在这里插入图片描述

输出结果$1表示这个结果可以用于将来的计算

在这里插入图片描述
如果要多次使用一个变量,可以直接使用变量名进行定义,但是要遵守Java语法
在这里插入图片描述
可以使用Tab键自动补全,查看某个包中的内容
在这里插入图片描述

//要重复执行一条命令,可以连续按“👆“键,直到看到想要重新运行或编辑的命令行,使用👈或👉键移动光标,enter键执行
java的优势? 1:跨平台(平台:指的是操作系统) 常见的操作系统:Windows Unix Linux Solaris(Sun) 跨平台:用java开发出来的应用程序不受底层操作系统的限制 底层的功臣:JVM = java虚拟机 = 1 + 2 + 3 = 秘书 + 保镖 + 翻译 = 秘书 = 类加载器 = ClassLoader = 保镖 = 字节码校验器 = ByteCode Verifier = 翻译 = 解释执行器 = Interfreter 2:安全 健壮 电力 电信 银行 都会有限考虑使用java实现 3:免费 开源 4:简单 语法简单:c++-- (取其精华 去其糟粕) 糟粕:手动垃圾回收 运算符重载 指针 思想简单:面向对象的思想 = OO思想 面向过程:需要人站在计算机的角度去思考问题 面向对象:需要人拿着代码模拟实现生活 类:一组类型相同事物高度抽象之后的集合概念 创建对象的模板 -》 class 对象:类的一个具体的实例 例子: 人和范冰冰之间的关系? 类和对象 HelloKitty和猫之间的关系? 对象和类 引用:对象的名字 *:一个对象同时可以有多个名字 但是不能一个 名字都没有 如果一个对象一个名字都没有的话 会被gc回收掉 -》 零引用内存回收 属性:对象有什么 方法:对象会什么 5: 动态更新 对于Sun公司官方提供的一些核心方法 值保留一个指向的关系 当若干年后核心类库升级了 我们的程序还是可以正常执行 这是挤兑c/c++的 搭建开发环境: 1:安装jdk http://www.oracle.com SDK = software developmenet kits = 软件开发工具包 JDK = java + SDK = java软件开发工具包 jdk1.5.0 jdk1.6.0 jdk1.7.0 jdk5.0 jdk6.0 jdk7.0 Tiger Mustang Dolphin 老虎 野马 海豚 路虎 悍马 .... JRE = java runtime environment = java运行环境 组成关系: JVM = 类加载器 + 字节码校验器 + 解释执行器 JRE = JVM + API(应用程序变成接口); JDK = JRE + BIN(常用的工具命令) 面试题: JDK和JRE之间的区别? 1:分别表示的含义不同 jdk:java软件开发工具包 jre:java运行环境 2:作用不同 jdk:当一个电脑上面安装jdk之后 会自动的安装jre 所以既可以编写程序 又可以运行程序 jre:当一个电脑上面安装jre之后 只能运行java代码 2:设置环境变量 (环境变量可以不设置 为了简化开发流程 提高开发效率) 给谁使用 作用 PATH: 操作系统 让操作系统更加快捷的找到一个文件/命令 PATH=C:\Program Files\Java\jdk1.6.0_45\bin(javac.exe->编译指令 java.exe -》运行指令) CLASSPATH:类加载器使用 让类加载器明确去哪里加载.class文件 通常不需要设置 默认值:. .:当前目录(.javaCLASSPATH相当于中国的低保制度 JAVA_HOME:其他的程序使用 WEB 设置方式: 1:一次性的设置 (cmd里面设置) set PATH=C:\Program Files\Java\jdk1.6.0_45\bin set PATH = [错误的 等号两边不能加空格] set PATH [找到所有以PATH开头的环境变量的值] set [找到所有的环境变量的值] //set PATH=C:\Program Files\Java\jdk1.6.0_45\bin set CLASSPATH=. set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45 set PATH=%JAVA_HOME%\bin *:%%表示取中间环境变量的值 *:环境变量的名字尽量大写 *:当我们需要给一个环境变量设置多个值的时候 中间需要用;隔开 2:一劳永逸的设置 我的电脑 -》 属性 -》 高级 -》 环境变量 -》 新建 面试题: 1:在设置环境变量的时候 最少需要设置几个环境变量? 0个 2:在设置环境变量的时候 通常需要设置几个环境变量? 1个 -》 PATH -> jdk/bin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值