java简介,
java简介,
1、历史
1995年 SUN公司 家电消费类产品 解决语言的跨平台问题
Oak——java
2、分类
JavaME(J2ME):java的微缩版,用于小型的数字设备应用程序开发,如手机PDA。
JavaSE(J2SE):java的标准版(即我们平常理解的java),也是其他版的基础,用于桌面应用程序的开发,包含构成Java的核心类,如面向对象,数据库连接。
javaEE(J2EE):java的企业版,用于开发多层结构,分布式,Web形式的企业级应用程序,定义了一系列企业开发,如EJB,JSP。
3、特点
面向对象:类、对象、继承、封装、多态、接口、包。
平台无关:“一次编写,到处运行”,Java虚拟机制保证了这一点。
简单性:加入了垃圾回收机制,摒弃了C++的指针。
解释执行:.java——.class——搭建过Java环境的操作系统上运行。
多线程:多线程同时执行,内设同步机制。
分布式:支持Internet一应用开发,基本应用编程接口中有网络应用编程接口,还有RIM机制。
健壮性:强类型机制,异常处理,垃圾回收。
高性能:Java的运行速度会越来越高。
安全性:Java提供一个安全机制,防止恶意代码的攻击。
4、工作原理
a、Java虚拟机(java virtual Machine ,JVM):
实现Java平台无关,它是软件模拟出来的计算机,可以在任何处理器上安全兼容的执行保存在.class文件中的字节码,有自己完善的硬件架构,(像处理器、堆栈、寄存器、还有相应的指令系统)。位置下:
用户
字节码程序
JVM
操作系统
硬件
.java文件的执行过程:.java——.class——JVM——机器语言——操作系统
.java——.class:Java编译器实现,编译器不会管程序执行过程中的内存布局,他将所有的引用信息保存在.class文件中。
.class——JVM——机器语言:JVM解释器实现,创建内存布局,再查表获取方法所在的地址,保证java的可移植性和安全性。
class——JVM——机器语言:过程细分
.class——类加载器——字节码校验器——解释器/代码生成器——执行
类加载器:将.class文件加载到JVM中,检验类文件是否符合类文件的规范
字节码校验器:检查类文件中是否存在某些非法操作
解释器:将类文件解释为机器码执行
“沙箱”运行模式:java程序的代码及数据都被限制在一定的内存空间内,不允许程序访问内存空间以外的内存
b、垃圾回收机制:
java运行环境中始终有一个系统级线程,跟踪内存使用情况,自动将不再使用内存回收(先加入回收列表)。
c、安全性:
通过Applet程序控制非法程序的安全性。
5、运行环境
JDK(java Development Kit):Java运行环境(java Runtime Environment)、java工具、java基础类库
bin:jdk工具程序,包括如下工具:
[
javac.exe:java编译器
java.exe:Java解释器
javap.exe:Java反汇编
jar.exe
jdb.exe
javadoc.exe:文档生成器
appletviewer.exe
javah.exe
jconsole.exe
]
demo:范例
include:本地方法文件
jre:运行环境文件
src.zip:API源码压缩文件
6、java程序的特点
a、基本格式:
修饰符 class 类名{
代码段
}
b、注释
package debug;
public class First {
public static void main(String[] args) {
for(int i=0;i<10;i++) {
System.out.println(i);
}
}
//单行注释 哈哈哈哈
/*多行
System.out.println();
注释*/
/**
* 文档注释,用于写作者信息,版本信息,文档作用等
*/
}
c、标志符
标识符:定义变量,常量,类名等
标识符首字母:字母,下滑线_,美元符号,¥人民币符号
package debug;
public class First {
public static void main(String[] args) {
int _¥a$A=56;//标识符首字母
int _0Aa$¥=100;//标识符构成,长度没有限制,区分大小写,
//类名:首字母必大写,后每个单词小写
//方法名、属性名、变量名、对像名:首字母消息,其后每个单词首字母大写
//关键字、包名:全小写
//常量:全大写
for(int i=0;i<10;i++) {
System.out.println(_¥a$A);
}
}
//单行注释 哈哈哈哈
/*多行
System.out.println();
注释*/
/**
* 文档注释,用于写作者信息,版本信息,文档作用等
*/
}
d、语句,函数,类,块
package debug;
public class First {//类:class,对象的模板,对象是模板的一个实例
static int fun1(int a,int b) {//函数:修饰符 返回值 函数名(参数类型1 参数名1,参数类型2 参数名2,)
return a+b;
}
public static void main(String[] args) {//块:成对的{}中的内容
int _¥a$A=56;//语句:以";"号结尾
int _0Aa$¥=100;
for(int i=0;i<10;i++) {
System.out.println(_¥a$A);
System.out.println(fun1(i,i+1));//调用函数
}
}
}
e、main()方法
package debug;
public class First {
public static void main(String[] args) {
//固定的格式,返回值是void
//Java虚拟机执行时,首先执行这个类的main()方法,通过 类名.main() 方式调用,因此必须是public static
//参数必须是String[] 至于名字倒是没有什么要求
}
}
7、java程序分类
Java Application(应用程序):
浏览器无关
独立运行
必有main()
java Applet(小程序):
浏览器有关
不能独立运行
无main()
8、java中的编码方式
"Java中"到底指的哪里????
指在内存中,在我们写的代码中申明的char string类型的变量中。
package debug;
public class First {
public static void main(String[] args) {
char _a$¥A1='永';
char a=0x6c38;//Java中(JVM中) 使用Unicode编码 具体是在内存中,在我们写的代码中申明的char string类型的变量中。
//JVM内部 和 文件系统中使用的编码不一样,
//面向字符的I/O操作会隐式的做出编码转换,Writer和Reader只能使用隐式转换,不能指定编码方式
//这种隐式转换仅限于文件采用GBK编码到Unicode的转换
//若文件采用其他的编码方式,则要进行字符到字节的转换,使用InputStreamReader OutputStreamWriter
System.out.format("%x",(short)_a$¥A1);
System.out.println(a);
}
}
相关文章
- 暂无相关文章
用户点评