分享提纲:
2.6 Java StringBuffer 和 StringBuilder 类
2.11 Java 流(Stream)、文件(File)和IO
2.13 Java 重写(Override)与重载(Overload)
本文主要介绍下Java程序的特点(不同于PHP的地方)和面向对象的一些特点
1. Java程序特点
【示例代码】
1 public class HelloWorld { 2 /* 第一个Java程序 3 * 它将打印字符串 Hello World 4 */ 5 public static void main(String []args) { 6 System.out.println("Hello World"); // 打印 Hello World 7 } 8 }
执行过程如下(图像演示):
C : > javac HelloWorld.java C : > java HelloWorld Hello World
1)【基本语法】
a)【大小写敏感】
Java的类和函数是大小写敏感的,这一点和PHP不同,PHP的类和函数的大小写不敏感
b)【源文件名】
--【一个文件只能有一个类】源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。
-- PHP没有这样的要求,因为PHP本身就是解释型的语言,不需要编译,也不需要生成编译文件类似 .class的文件
c)【主方法入口】
--必须有main方法(静态方法):所有的Java 程序由public static void main(String []args)方法开始执行。
--【也有例外】
java很多知识的,如果是单纯的javaApplication(java应用程序)应该有main()函数作为入口,但是像jsp或者是applet等都是不需要main()函数的
d)【每个变量都要先定义,并制定类型】
-- 这也是与PHP语言的不同点
2)【字符串】
a)【必须用双引号引着】
b) 【连接符】java中的字符串的链接符号是 "+", 不像PHP中是 ".",因为 "." 在Java中是 类中的变量的链接符。
3)【变量】
a)变量必须执行类型,且先定义
b)【种类】
--【概述】
Java有两大数据类型,内置数据类型 和 引用数据类型
内置数据类型:
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 byte, short, int, long, float, double, boolean, char
引用数据类型:
--在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如Employee、Pubby等。变量一旦声明后,类型就不能被改变了。
-- 对象、数组都是引用数据类型。
--所有引用类型的默认值都是null。
-- 一个引用变量可以用来引用与任何与之兼容的类型。
-- 例子:Site site = new Site("Runoob")。
c)【常量】
-- 在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似
4)【Java数组】
a)数组是储存在堆上的对象,可以保存多个同类型变量。
5)【Java枚举】
a)Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。
b)【语法】
class FreshJuice {
enum FreshJuiceSize{ SMALL, MEDUIM, LARGE }
FreshJuiceSize size;
}
6)【Java修饰符】
-- 访问修饰符 分类如下
a) 默认的,也称为 default,在同一包内可见,不使用任何修饰符。 b) 私有的,以 private 修饰符指定,在同一类内可见。 c) 共有的,以 public 修饰符指定,对所有类可见。 d) 受保护的,以 protected 修饰符指定,对同一包内的类和所有子类可见。
-- 非访问修饰符:
a)【Synchronized 修饰符】: -- Synchronized 关键字声明的方法同一时间只能被一个线程访问。Synchronized 修饰符可以应用于四个访问修饰符。 -- public synchronized void showDetails(){ ....... } b)【Transient 修饰符】: --序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。 --该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。 -- 实例 public transient int limit = 55; // 不会持久化 public int b; // 持久化 c) 【Volatile修饰符】 --volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。 -- 一个 volatile 对象引用可能是 null。