第一章:Java简介
一、Java的特性:
1、简单性;
2、面向对象;
3、分布性;
4、可移植性;
5、解释性;
6、安全性;
7、健壮性;
8、多线程;
9、高性能;
10、动态。
二、下载和安装JDK,进行环境变量配置。
PATH:
JAVA_HOME:
CLASSPAH:
在Windows系统中,环境变量需要使用英文的分号进行分隔;在Linux系统中,环境变量需要使用英文的冒号进行分隔。
文件名需要与源代码中公共类的名字相同。
第二章:Eclipse。
一、IDE(Integrated Development Environment)集成开发环境。
二、下载Eclipse;
三、汉化Eclipse(这个不是很提倡,因为以后更多接触的就是英文源码)。
四、调试程序,现在主要是断点调试,以后需要的就是Junit调试。
第三章 :语言基础
一、标示符
1、Java语言的标识符由字母、数字、下划线和美元符号组成,第一个字母不能是数字;
2、Java语言使用Unicode标准字符集,最多可以识别65535个字符;
3、标识符不能是Java的关键字和保留字;
4、在Java语言中标志符是区分大小的。
二、基本数据类型
1、8种基本数据类型6种数值类型、字符类型和布尔类型。6种数值类型有4种是整数类型(byte、short、int、long)和2种浮点类型(float和double)。
转移字符本身也是字符,所以将转义字符赋值给字符变量时,与其他字符常量一样需要使用单引号。
常量在整个程序中只能被赋值一次。定义的常量如果属于“成员变量”,则必须在定义时就赋给初值,否则将会在编译时出现错误。
局部变量可与成员变量的名字相同,此时成员变量将被隐藏,即这个成员变量在此方法中暂时失效。如果想要调用成员变量,需要使用“类名.静态变量”调用。
“&&”与“&”:“&&”属于“短路”运算符,“&”则属于“非短路”运算符。
三、运算符
1、移位运算符:Java语言中的移位运算符有3种,其操作的数据类型只有byte、short、char、int和long5种。
<<:左移运算符,就是将左边的操作数在内存中的二进制数据左移右边操作数指定的位数,左边移空的部分补0;
>>:右移运算符,如果最高位是0,左移空的位就填入0;如果最高位是1,右移空的位就填入1,使用方法和左移类似;
>>>:无符号右移运算符,不管最高位是0还是1,左移空的高位都填入0。
移位能让用户实现整数除以或者乘以2的n次方的结果。
boolean类型的值不能被转换为其他数据类型,反之亦然。
第四章:流程控制
同一个switch语句,case的常量值必须互不相同。Switch语句中表达式的值必须是整数或字符型,不可以是实数。
第五章:数组
数组是相同类型,用一个标识符封装到一起的基本类型数据序列或对象序列。
替换数组。
Arrays.fill(int[]a,int value)填充替换数组元素。
a:要进行元素替换的数组;
value:要存储数组中所有元素的值;
返回值:填充后的数组。
Arrays.fill(int[]a,int fromIndex,int toIndex,int value)
a:要进行元素替换的数组;
fromIndex:要使用指定值填充的第一个元素的索引(包括);
toIndex:要使用指定值填充的最后一个元素的索引(不包括);
value:要存储数组中所有元素的值;
返回值:填充后的数组。
如果指定的位置大雨或等于要进行填充的数组的长度,则会报出ArrayIndexOutOfBoundsException异常。
复制数组、数组排序。
第六章字符串
只要“+”运算符的一个操作对象是字符串,编译器就会将另外的操作类型转换成字符串形式。
String.split(String sign)字符串分隔
sign:分隔字符串的分隔符,也可以使用正则表达式;
返回值:根据分隔符分割后的字符串。
在正则表达式中,“.”代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符“.”,必须使用转移字符“\.”。
StringBuilder类是一个可变的字符序列,提供一个与StringBuffer类兼容的API,但是并不保证与之同步。该类是StringBuffer类的一个简易替换,在字符串缓存被单个线程使用时要比StringBuffer类快。但是将StringBuilder的实例用于多个线程是不安全的,这是就要使用StringBuffer类来实现。
第七章:类
具有相同属性和行为的一类实体被称为类。
构造方法没有返回值;构造方法的名称要与本类的名称相同。
类的主方法是静态的,没有返回值,形参为数组。也就是main方法。
如果一个方法中含有与 成员变量同名的局部变量在,则方法中这个变量的访问以局部变量进行访问。
被声明为static的变量、常量和方法被称为静态成员。静态成员是属于类所有的,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。
在静态方法中不可以使用this关键字;
在静态方法中不可以直接调用非静态方法。
当声明类时不适用public、protected、private修饰符设置类的权限,则这个类预设为包存取范围,即只有一个包中的类可以调用这个类的成员变量或成员方法。
this除了可以调用成员变量或成员方法之外,还可以作为方法的返回值。
引用只是存放在一个对象的内存地址,并非存放一个对象,严格说引用和对象是不同的,但是可以将这种区别忽略。
垃圾回收主要包括以下两种情况:
1、对象引用超过其作用范围,则这个对象将被视为垃圾;
2、将对象赋值为Null。
垃圾回收器只能回收那些由new操作符创建的对象,如果某些对象不是通过New操作符在内存中获取一块内存区域的,这种对象可能不被垃圾回收机制所识别,所以在Java语言中提供了一个finalize()方法,这个方法是Object类的方法,他被声明为protected,用户可以在自己的类中定义这个方法,如果用户在类中定义了finalize()方法,在垃圾回收时首先调用该方法,并且在下一次垃圾回收动作发生时,才能真正回收对象占用的内存。
垃圾回收或是finalize()方法不保证一定发生,如Java虚拟机面临内存待耗尽的情形,它是不会执行垃圾回收的。System.gc()强制启动垃圾回收器。
Java语言中创建的对象时保存在堆中的,为了提高查找的速度而是用了散列查找。散列查找的基本思想是定义一个键来银蛇对象存在的内存地址。当需要查找对象时,直接查找键就可以了,这样就不用遍历整个堆来查找对象了。
单例设计模式。
第八章:接口
[修饰符]interface接口名[extends 父接口名列表]
{
[public][static][final]变量;
[public][abstract]方法;
}
接口文件的文件名必须与接口名相同。
重写是指父子类之间的关系,重写也可以成为覆盖。
Super可以调用父类的构造方法,必须放在第一位置;操作被隐藏的成员变量和被重写的成员方法。
在Java语言中,通常使用方法的重载和重写实现类的多态性。重写也具有多态性。
抽象方法:抽象类中创建的,没有实际意义的,必须要子类重写的方法。抽象方法不能使用private或static关键字进行修饰。
内部类可分为成员内部类、局部内部类和匿名内部类。
在一个类中使用内部类可以在内部类中直接存取其所在类的私有成员变量。但内部类的成员只有在内部类的范围之内是可知的,不能被外部类使用。
如果在外部类和非静态方法之外实例化内部类对象,需要使用“外部类.内部类”的形式指定该对象的类型。