1、说说计算机语言的发展历史?
第一代:机器语言 第二代:汇编语言
第三代:高级语言 第四代:SQL语言
第一台电子计算机叫 (ENIAC即"埃尼阿克"),于1946年2月14日在美国宾夕法尼亚大学的莫尔电机学院诞生。
2、说说java语言的发展历史?
java隶属于sun公司,后来被oracle公司收购,创始人:James Gosling高司令(17年4月到aws的云计算服务部担任负责人)
(1)、J2EE (JavaEE)
–Java 2 Enterprise Edition: 定位在服务器端的应用
(2)、J2SE (JavaSE)
–Java 2 Standard Edition :定位在个人计算机上的应用
(3)、J2ME (JavaME)
–Java 2 Micro Edition :定位在消费性电子产品的应用上
3、JDK,JRE,JVM分别指的是什么,它们的关系如何?
(1)、JDK:java development kit(java开发工具包),JDK包含JRE,而JRE包含JVM。
(2)、JRE:java runtime environment(java 运行环境)
(3)、JVM: java virual machine(java虚拟机:跨平台的核心)
(4)、JDK,JRE,JVM三者关系概括如下:
jdk是JAVA程序开发时用的开发工具包,其内部也有JRE运行环境JRE。JRE是JAVA程序运行时需要的运行环境,就是说如果你光是运行JAVA程序而不是去搞开发的话,只安装JRE就能运行已经存在的JAVA程序了。JDk、JRE内部都包含JAVA虚拟机JVM,JAVA虚拟机内部包含许多应用程序的类的解释器和类加载器等等。
4、java实现跨平台的核心原理是什么?
同一个java文件,在经过不同的操作系统的jvm的时候,产生不同的操作系统可识别的机器码文件,只需要给不同的操作系统配备不同的jvm就可以了,java源文件不再需要修改
5、java语言的执行分为两个步骤是什么?
(1)、编译,将源文件编译成字节码文件
(2)、解释,将字节码文件解释成不同操作系统可识别的机器码文件
6、java开发运行步骤是什么?
(1)、创建并编辑Java源程序,用“.java”作为文件扩展名
(2)、使用命令“javac”编译“java源程序文件名.java”。最后编译成Java虚拟机能够明白的指令集合,且以字节码的形式保存在文件中。字节码文件以“.class”作为扩展名。
(3)、执行java程序,使用“java”命令运行class(字节码)文件“java文件名”,Java解释器会读取字节码,取出指令并且翻译成计算机能执行的机器码,完成运行过程。
(1)、J2EE(Java 2 Enterprise Edition):定位在服务器端的应用
J2EE是J2SE的扩展,增加了用于服务器开发的类库。如:javax.servlet。Enterprise JavaBeans 是一种用来代表企业逻辑的软件组件;JDBC则是让程序人员能直接在Java内使用的SQL的语法来访问数据库内的数据;Servlet能够延伸服务器的功能,通过请求-响应的模式来处理客户端的请求;JSP是一种可以将Java程序代码内嵌在网页内的技术;另外还有包括XML、email及transaction等各种应用于服务器端的API。
(2)、J2SE(Java 2 Standard Edition):定位在个人计算机上的应用
这个版本是Java平台的核心,它提供了非常丰富的API来开发一般个人计算机上的应用程序,包括用户接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。在互联网上大放异彩的Applet也属于这个版本。
(3)、J2ME(Java Micro Edition):定位在消费性电子产品的应用上
J2ME是J2SE的内伸,包含J2SE的一部分核心类,也有自己的扩展类,增加了适合微小装置的类库:javax.microedition.io.*等。这个版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。这个版本的应用层面相当广泛,会是未来Java平台发展的重点项目。
JAVA技术体系架构 |
(1)、简单性:
就是c++语法的纯净版。没有头文件,指针运算,结构,联合,操作符重载,虚基类等等。由于语法基于c,因此学习起来完全不费力。
面向对象:面向对象是一种程序设计技术,他将重点放在数据(即对象)和对象之间的接口上。
(2)、可移植性:
这是JAVA的一个重要的优势。JAVA代码或者说字节码、二进制码可以跨平台的移植,而不用管具体的操作系统和硬件环境。JAVA本身就是面向网络的,只有在网络环境中才能显示出他的优势,比如:现在我有一个网络环境,要让我的笔记本和手机交互,笔记本环境是windows发出一个让手机定时录音的JAVA代码,手机只有简单Linux内核操作系统,照样可以完美的执行这个代码。
“一次编写,随处运行”:“write once, run anywhere”
JAVA在设计时就很注重移植和跨平台性。比如:JAVA的Int永远都是32位。不像c++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。
(3)、高性能:
JIT(JUST IN TIME)即时编译。将一些“热点”字节码编译成本地机器码,并将结果缓存起来,在需要的时候重新调用。这样的话,使JAVA程序的执行效率大大提高,某些代码甚至接待c++的效率。随着这种技术的一天天完善,也许有一天会超越编译代码的效率。
(4)、分布式:
JAVA是为internet的分布式环境设计的,因为他能够处理tcp/ip协议。事实上,通过url访问一个网络资源和访问本地文件是一样简单的。Java还支持远程方法调用(RMI,remote method Invocation),使程序能够通过网络调用方法。
(5)、动态性:
就是在需要时将某些代码添加到正在运行的程序中。反射机制。当需要把某些代码添加到正在运行的程序中时,动态性是一个非常重要的特性。Java的动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类,这是C++语言进行面向对象程序设计所无法实现的多线程,多线程的使用可以带来更好的交互响应和实时行为。多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。
(6)、安全性
Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以构建防病毒,防篡改的系统。
(7)、健壮性
Java是一种健壮的语言,吸收了C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)。Java程序不可能造成计算机崩溃。Java系统仔细检测对内存的每次访问,确认它是合法的,而且不致引起任何问题。不过,即使Java程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃,而是把该例外抛弃。再通过异常处理机制,程序就会发现这类例外,并加以处理。
1、计算机的高级编程语言类型: 编译型 ,解释型
2、Java 语言是两种类型的结合;
(1)、利用编辑器编写 Java源程序à源文件名:主类名.java
(2)、利用编译器(javac)将源程序编译成字节码à 字节码文件名:源文件名.class
(3)、利用虚拟机(解释器,java)解释执行: 运行过程:载入、代码校验、解释执行
JVM(JAVA VIRTUAL MACHINE)
JVM是一种规范,可以使用软件来实现,也可以使用硬件来实现,就是一个虚拟的用于执行bytecodes字节码的计算机。他也定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域。
JVM负责将java字节码解释运行,边解释边运行,这样,速度就会受到一定的影响。JAVA提供了另一种解释运行的方法JIT(just in time),可以一次解释完,再运行特定平台上的机器码,高级的JIT可以只能分析热点代码,并将这些代码转成本地机器码,并将结果缓存起来,下次直接从内存中调用,这样就大大提高了执行JAVA代码的效率。这样就实现了跨平台、可移植的功能。
(1)、JVM是指在一台计算机上由软件或硬件模拟的计算机;它类似一个小巧而高效的CPU。
(2)、byte-code代码是与平台无关的是虚拟机的机器指令。
(3)、java字节代码运行的两种方式:
1)方式interpreter(解释)
2)Just-in-time(即时编译):有代码生成器将字节代码转换成本机的机器代码,然后可以以较高速度执行。不同的操作系统有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。
1、Java Runtime Environment (JRE) 包含:Java虚拟机、库函数、运行Java应用程序和Applet所必须文件
2、Java 2 SDK (Development Kit)包含:JRE的超集,包含编译器和调试器等用于程序开发的文件
3、Java运行环境的三项主要功能:
(1)、加载代码:由class loader 完成;
(2)、校验代码:由bytecode verifier 完成;
(3)、执行代码:由 runtime interpreter完成。
4、JDK 和JRE:
(1)、sdk(也就是jdk)是jre的超集,是在jre的基础上增加了编译器及其他一些开发工具。
(2)、jre就是java运行时环境,包括了jvm和其它一些java核心api,任何一台电脑,只有安装了jre才可以运行java程序.
5、总结:
(1)、如果只是要运行JAVA程序,之需要JRE就可以。 JRE通常非常小,也包含了JVM.
(2)、如果要开发JAVA程序,就需要安装JDK。
6、JAVA语言应用范围
(1)桌面应用编程
(2)WEB客户端编程
(3)WEB服务器编程
(4)手机编程
(5)机器人编程
(1)、下载:Download J2SDK (Java 2 Software Development Kit) from http://java.sun.com
(2)、安装:run the executable(跟普通软件安装一样,点击下一步就OK!)
(3)、环境变量配置:
环境变量(就是为相关命令提供一个路径信息,告诉他到哪里去找相关文件信息): 设置: 新增系统环境变量JAVA_HOME,设置为JDK的安装路径: 修改系统环境变量Path,在最前面追加% JAVA_HOME %\bin,并以;和原路径分隔。再增加:“.;”。这是表示当前目录的意思。 注意:(%JAVA_HOME%\bin) classpath问题:如果使用jdk1.5以上就不需要配置这个环境变量!JRE会自动搜索当前路径下的类文件及相关jar文件 |
(4)测试安装:
运行cmd输入命令:java –version: 出现如下结果,则通过测试。
一个典型的JAVA程序的编写和运行过程
(1)编辑阶段:(程序员编辑代码并保存在磁盘上)
public class Welcome{ public static void main(String[] args){ System.out.println("Hello java!"); } }; |
保存为:Welcome.java
(2)编译阶段。(编译器创建class字节码文件)
1. 进入java文件所在目录,执行命令:javac Welcome.java 2. 生成class文件 |
执行:”Java Welcome”后发生的事。就是3-5阶段。
(3)载入阶段
程序在执行前必须首先放入内存中。这个过程是有类装载器将一个或多个class文件内容传输到内存中。”Java Welcome”激活了java解释器(jvm),然后jvm调用类装载器载入welcome.class中的信息。
(4)代码校验
JVM调用代码校验器检验加载的代码是否合法并且不会破坏java的安全性约束。
由于JAVA代码在网络环境中传播,为了避免破坏用户的文件和系统,必须保证严格的安全约束。
(5)运行阶段
计算机在CPU的控制下逐字节的执行这个程序。
(1)、出现如下错误的原因:‘java’ 不是内部或外部命令,也不是可运行的程序或批处理文件。设置path
(2)、 编译javac Test.java,明明看到该文件,为何找不到?àHelloWorld.java.txt
显示扩展名! (详细列表 / 显示所有文件 / 标题栏地址栏全路径)
(3)、NoSuchMethodError:main
解决方案:该行代码敲错,确定是否是:public static void main(String[] args)
(1)、Java对大小写敏感,如果出现了大小写拼写错误,程序无法运行。
(2) 、关键字public被称作访问修饰符(access modifier),用于控制程序的其它部分对这段代码的访问级别。
(3) 、关键字class 表明Java 程序中的全部内容都包含在类中,Java是一种纯面向对象的语言。
(4) 、一个源文件中至多只能有一个public的类声明,其它类的个数不限,如果源文件中包含一个public 类,源文件名必须和它中定义的public的类名相同,且以“java”为扩展名。
(5)、一个源文件可以有多个class
正确编译后的源文件,会得到相应的字节码文件,编译器为每个类生成独立的字节码文件,且将字节码文件自动命名为类的名字且以“class”为扩展名。
(6)、main方法是Java应用程序的入口方法,它有固定的书写格式:
(7) 、public static void main(String[] args) {…}
在Java中,用花括号划分程序的各个部分,任何方法的代码都必须以“{”开始,以“}”结束, 由于编译器忽略空格,所以花括号风格不受限制。
(8)、Java中每个语句必须以分号结束,回车不是语句的结束标志,所以一个语句可以跨多行。
(9)、编程风格:
注意缩进! 成对编程!
常用dos命令
(1)dir directory 查看当前目录下的文件和子文件夹
(2)cd change directory 改变当前文件夹
(3)md make directory创建当前文件夹
(4)rd remove directory删除当前文件夹
(5)cls clear screen清除屏幕
(6)切换盘符 d: c:
(7)copy 源文件 目的文件
(8)del 文件名
(9)Tab键 帮助自动完成文件名或者文件夹
(10)上下箭头键 显示之前或者之后的命令
注意:如果需要其他的命令通过help自行查看
eclipse快捷键大全
Ctrl+1 快速修复(最经典的快捷键)
Ctrl+D 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+T 快速显示当前类的继承结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+/ (小键盘) 折叠当前类中的所有代码
Ctrl+× (小键盘) 展开当前类中的所有代码
Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这
个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变为大写
Ctrl+Shift+Y 把当前选中的文本全部变为小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)
下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)
Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)
Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)
Alt+Shift+F 把Class中的local变量变为field 变量 (比较实用的功能)
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)
Alt+Shift+V 移动函数和变量(
Alt+Shift+Z 重构的后悔药(Undo)
编辑作用域功能快捷键
全局查找并替换 Ctrl+F
文本编辑器 查找上一个 Ctrl+Shift+K
文本编辑器 查找下一个 Ctrl+K
全局撤销 Ctrl+Z
全局复制 Ctrl+C
全局恢复上一个选择 Alt+Shift+↓
全局剪切 Ctrl+X
全局快速修正 Ctrl1+1
全局内容辅助 Alt+/
全局全部选中 Ctrl+A
全局删除 Delete
全局上下文信息 Alt+?
Alt+Shift+? Ctrl+Shift+Space
Java编辑器 显示工具提示描述 F2
Java编辑器 选择封装元素 Alt+Shift+↑
Java编辑器 选择上一个元素 Alt+Shift+←
Java编辑器 选择下一个元素 Alt+Shift+→
文本编辑器 增量查找 Ctrl+J
文本编辑器 增量逆向查找 Ctrl+Shift+J
全局粘贴 Ctrl+V
全局重做 Ctrl+Y
查看作用域功能快捷键
全局放大 Ctrl+=
全局缩小 Ctrl+-
窗口作用域功能快捷键
全局 激活编辑器 F12
全局 切换编辑器 Ctrl+Shift+W
全局上一个编辑器 Ctrl+Shift+F6
全局上一个视图 Ctrl+Shift+F7
全局上一个透视图 Ctrl+Shift+F8
全局下一个编辑器 Ctrl+F6
全局下一个视图 Ctrl+F7
全局下一个透视图 Ctrl+F8
文本编辑器显示标尺上下文菜单 Ctrl+W
全局显示视图菜单 Ctrl+F10
全局显示系统菜单 Alt+-
导航作用域功能快捷键
Java编辑器打开结构 Ctrl+F3
全局打开类型 Ctrl+Shift+T
全局打开类型层次结构 F4
全局打开声明 F3
全局打开外部 javadoc
Shift+F2
全局打开资源 Ctrl+Shift+R
全局后退历史记录 Alt+←
全局前进历史记录 Alt+→
全局上一个 Ctrl+,
全局下一个 Ctrl+.
Java编辑器显示大纲 Ctrl+O
全局在层次结构中打开类型 Ctrl+Shift+H
全局转至匹配的括号 Ctrl+Shift+P
全局转至上一个编辑位置 Ctrl+Q
Java编辑器转至上一个成员 Ctrl+Shift+↑
Java编辑器转至下一个成员 Ctrl+Shift+↓
文本编辑器转至行 Ctrl+L
搜索作用域功能快捷键
全局出现在文件中 Ctrl+Shift+U
全局打开搜索对话框 Ctrl+H
全局工作区中的声明 Ctrl+G
全局工作区中的引用 Ctrl+Shift+G
文本编辑作用域功能快捷键
文本编辑器改写切换 Insert
文本编辑器上滚行 Ctrl+↑
文本编辑器下滚行 Ctrl+↓
文件作用域功能快捷键
全局保存 Ctrl+X Ctrl+S
全局打印 Ctrl+P
全局关闭 Ctrl+F4
全局全部保存 Ctrl+Shift+S
全局全部关闭 Ctrl+Shift+F4
全局属性 Alt+Enter
全局新建 Ctrl+N
项目作用域功能快捷键
全局全部构建 Ctrl+B
源代码作用域功能快捷键
Java编辑器格式化 Ctrl+Shift+F
Java编辑器取消注释 Ctrl+/
Java编辑器注释 Ctrl+/
Java编辑器添加导入 Ctrl+Shift+M
Java编辑器组织导入 Ctrl+Shift+O
Java编辑器
运行作用域功能快捷键
全局单步返回 F7
全局单步跳过 F6
全局单步跳入 F5
全局单步跳入选择 Ctrl+F5
全局调试上次启动 F11
全局继续 F8
全局使用过滤器单步执行 Shift+F5
全局添加/去除断点 Ctrl+Shift+B
全局显示 Ctrl+D
全局运行上次启动 Ctrl+F11
全局运行至行 Ctrl+R
全局执行 Ctrl+U
重构作用域功能快捷键
全局撤销重构 Alt+Shift+Z
全局抽取方法 Alt+Shift+M
全局抽取局部变量 Alt+Shift+L
全局内联 Alt+Shift+I
全局移动 Alt+Shift+V
全局重命名 Alt+Shift+R
全局重做 Alt+Shift+Y
深入理解java虚拟机: 周志明
设计模式之禅:
国内:oschina.com、CSDN
博客园51cto
国外:github.com、stackoverflow.com
JDK1.5新特性:
(1)、自动装箱与拆箱:
(2)、枚举
(3)、静态导入
(4)、可变参数(Varargs)
(5)、内省(Introspector)
(6)、泛型(Generic)
(7)、For-Each循环