1.java发展史
1991年4月,Sun公司的James Gosling领导的绿色计划(Green Project)开始着力发展一种分布式系统结构,使其能够在各种消费性电子产品上运行 。Green项目组的成员发现C++语言的不足,于是研发了一个当时起名为Oak的语言,这就是java的前身。
Sun在1996年1月23日发布了JDK1.0。这个版本包括了两部分:运行环境(即JRE)和开发环境(即JDK)。在运行环境中包括了核心API、集成API,用户界面API,发布技术,Java虚拟机(JVM)五个部分。
1997年2月18日发布了JDK1.1。JDK1.1相对于JDK1.0最大的改进就是为JVM增加了JIT(即时编译)编译器。1998年是Java开始迅猛发展的一年。在这一年中Sun发布了JSP/Servlet、EJB规范以及将Java分成了J2EE、J2SE和J2ME。
2004年10月,Sun发布了我们期待已久的版本:JDK1.5,同时,Sun将JDK1.5改名为J2SE5.0。Java分成的J2EE、J2SE和J2ME更改为JavaEE,JavaSE和JavaMe。
2.Java的特点
1) 简单(Java语法是C++语法的一个“纯净”版本);
2) 可移植性 (一次编译到处运行)
3) 面向对象
4) 分布式(Java把打开套接字连接等繁琐的网络任务变得非常容易)
5) 健壮性(Java编译器会检查出很多其他语言在运行时刻才显示出来的错误;Java采用的指针模型可以消除重写内存和数据崩溃的可能)
6) 多线程(多线程编程的简单性是Java成为流行的服务器端开发语言的主要原因之一)
7)安全(用Java可以构建防病毒和防篡改的系统)
9) 动态(Java可随意增加新的方法以及实例变量,而客户端却不需做任何的更改)
10)体系结构中立(字节码与计算机体系结构无关,只要存在运行时系统,可在多种处理器上执行)
3.运行原理
先编译 *.java文件――――>*.class文件
运行 *.class ――加载――> JVM(JAVA虚拟机
4.配置环境
LINUX系统(修改环境配置文件)
1 打开shell
2 vi .bash_profile
3 JAVA_HOME=JAVA目录路径
4 PATH=$JAVA_HOME/bin:其他路径
5 CLASSPATH=.
6 export JAVA_HOME CLASSPATH
Windows系统
我的电脑属性―――>环境变量
设置环境变量:
JAVA_HOME=路径
PATH = %PATH%;c:/j2sdk1.4.2_05/bin;
CLASSPATH = .;
5.Java中基本概念
1) 源文件
在最顶层只包括一个public类型的类/接口,文件名与类/接口名同并以.java作为文件后缀。
2) 包(package ,在源文件中this identify只能放在第一行,且最多只能是一行)
一个将类和接口组织在一块的实体,在文件系统中以目录/文件夹型式呈现。
6.注释的三种形式
// 单行注释
/* 一或多行注释 */
/** 文档注释 */
7.Java代码中的“;”、“{}”、“ ”
Java语句以分号分隔;
Java代码块包含在大括号内;
忽略空格。
8.标识符
1) 用以命名类、方法和变量、以及包;
遵守JAVA的命名规范
类以每个单词都以大写字母开头。
方法和变量第一个字母不大写,其他依旧
2) 以字符、“_”或“$”开头;
3) 无长度限制。
9.数据类型
1) 整型
byte 1B 8位 -128到127
short 2B 16位 -2^15到2^15-1
int 4B 32位 -2^31到2^31-1
long 8B 64位 -2^63到2^63-1
2) 浮点类型
float 4B 32位
double 8B 64位
3) 字符类型
char 2B 16位
4) 布尔型
boolean false/true
注:1) char是无符号的16位整数,字面值必须用单引号括起来; ‘a’
2) String 是类,非原始数据类型;
3) 长整型数字有一个后缀为“L”或“l”,八进制前缀为“0”,十六进
制前缀为“0x”;
4) 黙认浮点类型为double;
5) float数据类型有一个后缀为“f”或“F”,Double数据类型后可跟后缀“D”或“d“
10.命名规则
1) 类/接口名首字母大写;
2) 方法、变量名第一个字母小写,其余首字母大写;
3) 常量名称全部大写;
4) 包名全部小写。
11.变量和作用域
1) 局部变量
定义在方法内部,其作用域为所在代码块,也称为临时变量、栈变量。
存在于栈中。
2) 实例变量
定义在类内部方法之外,其作用域为整个类。如未定义初值,系统会自动为其赋黙认值。存在于堆中
默认数值
类型 黙认值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '/u0000' 空格
boolean false
*All reference types null
12.操作符
System.out.println(3/2) 按整型计算 得1
1) >> 前面是零补零,前面是一补一;
2) >>> 无符号右移;
>>和>>>对于负数不一样
正数:>>等于除以X的2次方
负数:正数的结果+1
3) && 短路与,前面为假,表达式为假,后面不须计算;
4) || 短路或,前面为真,表达式为真,后面不计算;
例:
if(a<3&(b=a)==0) b赋值
if(a<3&&(b=a)==0) b不赋值
13.数字类型之间的转换
1) byte ——→ short ——→ int ——→ long
2) char ——→ int - - - → float
3) float ——→ double
4) long ——→ float
5) long ——→ double
6) int ——→ double
注:1)实箭头表示无信息损失的转换,虚箭头表示转换可能引起损失;
2)int和float同为32位,但float要有几位表示幂的位数,在精度位数上要比int要小,所以有可能会有损失。long转为double同理;
3)char和short同为16位,但char属无符号数,其范围为0~2^16, short的范围为-2^15~2^15-1 , 所以char和short不能相互转换;
4)byte、short、char属child型,在计算时会自动转为int型,然后转为更大范围类型(long、short、double)。
14.强制类型转换
1) 语法:圆括号中给出要转换的目标类型,随后是待转换的变量名。例:doublc x=9.997;int nx = (int)x;
2) 如果试图强制转换的类型超出了目标类型的范围,结果是一个被截取的不同的数值;
3) 不能在布尔值和任何数字类型间强制类型转换,如确要转换,可使用条件表达式,例:b?1:0。
15.控制流
if()
if()….else
if()…..else if()….else
switch(){
case variable:……..
case variable:……..
default:
…………
}
注解:switch()内数据类型为child类型 byte short char 自动转换为int
case块中不加break时顺序执行下面的语句。
16.循环语句
for(int i=0;i<n;i++){}
while(){}
do{} while();-----------