java发展 1995年5月,sun发布了java语言。 1998年12月,发布了里程碑的版本1.2,也称为java 2。然后一分为3,标准版(J2SE),微缩版(J2ME),企业版(J2EE) 2004年10月,发布了1.5版本,也称为java5.0 2006年11月,java6.0发布,java2改为java。 2009年,甲骨文公司宣布收购Sun 2011年,Java7正式发布 2014年,甲骨文公司发布了Java8正式版
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 一次编写,随处运行 无论在什么环境下编译的,可以在任何运行有java虚拟机的平台上运行java程序,不需要修改代码或重新编译。
触发垃圾回收的方法: 1、将无用对象赋值为null。 2、重新为引用变量赋值。比如: Person p = new Person("aaa"); p = new Person("bbb"); 这样,new Person("aaa")这个对象就是垃圾了----符合垃圾回收条件了。
java程序中也存在内存泄漏 Vector v = new Vector(10); for (int i = 1; i < 100; i++) { Object o = new Object(); v.add(o); o = null; } 在这个例子中,我们循环申请Object对象,并将所申请的对象放入一个 Vector 中,如果我们仅仅释放引用本身,那么 Vector 仍然引用该对象,所以这个对象对 GC 来说是不可回收的。因此,如果对象加入到Vector 后,还必须从 Vector 中删除,最简单的方法就是将 Vector 对象设置为 null。
基本规则: 1、java拼写大小写敏感 2、一个源文件中可以定义多个java类,但只能有一个类被定义为public类 3、若源文件中定义了public类,那文件名必须和public类同名 4、一个源文件包括多个类时,编译后会生成多个.class文件,每个文件名对应各个类名
注释 1、// 从开始到本行结尾 2、/* 开头到 */结束,可以跨行 3、以/** 开头,*/结束,可以跨行,使用javadoc工具可以把注释内容提取出来生成软件说明文档。 注:javadoc生成功能在“project-Generator Javadoc”中。
分隔符 分号; 是每句java语句结束的标记 逗号,当一个方法有多个参数时,用逗号分隔。 圆点. 用于访问对象成员(属性或方法)时标名调用或隶属关系,格式为“对象名.对象成员” 空格 用于分隔源代码中的不同成分。例如修饰符和数据类型之间,数据类型和变量名或方法名之间。 花括号{} 用于限定某一成分的范围,成对使用。花括号括起来的零至多条语句叫语句块。
标识符 例如:类名,方法名,变量名 标识符由java字母,下划线,美元符开头,后跟字母,下划线,美元符或数字。 java字母可以理解为a-z,A-Z java是大小写敏感的。
关键字 java中将一些特定的单词保留专门的用途 例如:class,abstract,assert,byte,case,if,import,public,for等等 总结:java关键字都是小写的,所以避免关键字可以把首字母大写,例如For,Public
基本数据类型 1、整型(byte,short,int,long,直接以数字给出的整型常量默认为int)
2、浮点型(float,double) 3、字符型 常用的是英文半角的单引号括起来的字符,例如'a','字',' '(空格) 4、布尔型 boolean类型数据有两种状态:true和 false java不允许使用0或非0的整数来作为boolean使用
引用数据类型 类 接口类型 数组类型 枚举类型 注解类型 见下页例子
算术运算符 + - * / %
关系运算符 > < >= <= == !=
布尔运算符 && ||
赋值运算符 = 扩展赋值运算符 += -= *= /= %=
其他运算符 1、条件运算符 ? 例如:表达式1?表达式2:表达式3 2、自增,自减 ++ 例如:i++,++i -- 例如:i--, --i 3、字符串连接运算符 + 当+两边是数值型,则进行运算。当两边有一侧是字符串型,则会把另一侧也按字符串处理,结果是字符串连接。
if-else的三种形式 1、if(<表达式>) <语句>
if-else的三种形式 2、if(<表达式>) <语句1> else <语句2>
if-else的三种形式 3、if(<表达式1>) <语句1> else if(<表达式2>) <语句2> else if(<表达式3>) <语句3> else <语句4>
if语句的嵌套 if(<表达式1>) if(<表达式2>) <语句1> else <语句2> else <语句3>
switch switch(<表达式>) case<常量1>:[<语句1>] case<常量2>:[<语句2>] case<常量3>:[<语句3>] default:[<语句n>] switch的表达式类型有基本类型byte,short,char,int和引用类型枚举还有四种封装类型Character,Byte,Short,Integer. 语句一般用break跳出。
break 终止所在的switch语句或循环语句的运行
continue 结束所在的循环语句本次运行,即跳过其后的循环体语句,开始下一次循环。
for for(<初始化表达式>;<循环条件表达式>;<迭代表达式>) <语句> 具体流程 1、执行初始化表达式 2、计算循环条件表达式的值,若为true,则执行第三步,否则结束循环 3、执行循环体语句 4、执行迭代表达式,然后进入到第2步继续执行。
while while(<循环条件表达式>) <语句>
do-while do <语句> while(<循环条件表达式>)
for-each for(<迭代变量声明>:<数组或集合>) <语句>
递归: 递归,就是在运行的过程中调用自己。 构成递归需具备的条件: 1. 子问题须与原始问题为同样的事,且更为简单; 2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
例子:
/*class Test{//一加到一百
public static void main(String[] args) {
int a=0;
for( int b=1; b<=100; b++){
a+=b;
if(b==100){
System.out.print(b+"=");
}else{
System.out.print(b+"+");
}
}
System.out.println(a);
}
}*/
/*class qwer{//要求一百以内不加 39,55
public static void main(String[] args) {
int sum= 0;
for( int i=0;i<=100;i++);
if(i==39||i==55){
continue
}
sum +=i;
}
System.out.println(sum);
}
}*/
/*class mppx{//冒泡排序
public static void main(String[] args) {
int a[]={3,5,9,7};
int temp=0;
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1; j++) {
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
System.out.println("第"+i+"轮排徐结果");
for(int b:a){
System.out.println(b+",");
}
System.out.println("");
}
System.out.println("最终排序");
for(int b:a){
System.out.println(b+",");
}
}
}*/
class yjdyb{//一加到一百
public static void main(String[] args) {
int i=0;
int sum=0;
while(i<=100){
sum+=i;
i++;
}
System.out.println(sum);
}
}
class jc{//阶乘
public static void main(String[] args) {
}
int sum =3;
public static int f(int n){
if(n==1){
return 1;
}else{
return n*f(n-1);
}
}
}