1,JAVA语言概述式
Java是——简单的、面向对象的、安全的、解释的、与平台无关的、多线程
面向对象的程序设计思想
–Java是面向对象编程语言,完全支持面向对象的三大基本特征:封装、继承和多态。
–组成Java程序的最小单位是类,类封装了数据与处理数据的方法。
例:
–构建一个汽车类,需要提取所有汽车对象的共有的状态和行为。将状态用变量表示,行为用方法表示。
class Car {
intcolor_number;
intdoor_number;
int speed;
……
void brake() { … }
void speedUp() {…};
void slowDown() { … };
……
}
1.2 Java语言的特点
面向对象
安全性
–Java不支持指针
–Java的内部安全措施
平台无关性
–编译后的字节码对应于Java虚拟机,因此可在不同平台上运行
多线程
–Java是第一个在语言级提供内至多线程支持的高级语言
内存管理
–Java对内存自动进行管理并进行垃圾回收
Java与C/C++的区别
–Java中没有#include 和#define 等预处理功能,用import语来句包含其它类和包;
–Java中没有structure,union及typedef;
–Java中没有不属于类成员的函数,没有指针和多重继承,Java只支持单重继承;
–Java中禁用goto,但goto还是保留的关键字;
–Java中没有操作符重载;
–Java中没有全局变量,可以在类中定义公用、静态的数据成员实现相同功能。
1.3 Java类库
l对于大多数常用的功能,有大量已经编译好、经过测试的类,这些类的集合就是Java类库。
lJava类库主要是随编译器一起提供,也有些类库是由独立软件开发商提供的。
2. Java跨平台的原理
3. Java开发工具及应用举例
Java开发工具包括
Javac:
Java编译器,用来将java程序编译成 Bytecode。
Java:
Java解释器,执行已经转换成Bytecode的java应用程序。
Jdb:
Java调试器, 用来调试java程序。
Javap:
反编译,将类文件还原回方法和变量。
Javadoc:
文档生成器,创建HTML文件。
Appletviwer:
Applet解释器, 用来解释已经转换成Bytecode的java小应用程序。
安装JDK后产生如下目录:
\bin目录:Java开发工具,包括Java编译器、解释器等
\demo目录:一些实例程序
\lib目录:Java开发类库
\jre目录: Java运行环境,包括Java虚拟机、运行类库等
4. 基本数据类型与表达式
变量与常量
变量
–一个由标识符命名的项
–每个变量都有类型, 例如 int类型或 Object类型, 变量还有作用域.
–变量的值可以被改变.
常量
–常量一旦被初始化以后就不可改变。
final int PRICE=30;
标识符
–标识符是一个名称,与内存中的某个位置(地址)相对应
–标识符的第一个字符必须是下列字符之一:
大写字母 (A-Z)
小写字母 (a-z)
下划线(_)
美元符号 ($)
–标识符的第二个字符及后继字符必须是:
上述列表中的任意字符
数字字符 (0-9)
基本数据类型
–byte 8 bits -128 ~ +127
–short 16 bits -32768~ + 32767
–int 32 bits –231~(231-1)
–long 64 bits –263~(263-1)
–char 16 bits 0 ~ 65535
整数运算
–比较运算符(关系运算符)
算术比较运算符 <, <=, >, and >=
算术相等比较运算符 ==and !=
–算术运算符
一元运算符 + 和 -
+,- *, /, 和 % (取余 )
自增/自减运算符 ++/--
移位运算符 <<, >>, and >>>
位运算符 ~, &, |, and ^
–条件运算符 ? :
–类型转换运算符
浮点数
–float:
单精度浮点数
32-bit
- m·2e ~ m·2e
–m 是一个小于 224的正整数
–e 是一个介于 -149和104之间(含)的整数
–double:
双精度浮点数
64-bit
- m·2e ~ m·2e
–m是一个小于 253的正整数
–e是一个介于 -1045 和 1000之间(含)的整数
布尔类型和布尔值
–布尔类型表示一个逻辑量, 有两个取值: true和false
布尔运算符
–关系运算符 ==and !=
–逻辑“非”运算符 !
–条件“与”和条件“或”运算符 && 和 ||
–条件运算符 ? :
String——字符串
–String 是一个类
–String类JDK标准类集合中的一部分
String animal = "walrus";
String animal = new String("walrus");
表达式与运算符
表达式是由一系列变量、运算符、方法调用构成的,表达式可以计算出一个值来。
程序中的很多工作是通过计算表达式的值来完成的。
–有时需要的是表达式的副作用,例如赋值表达式将数值赋给变量
–更多时候起作用的是表达式的值,这个值可以用作方法的参数,或更大的表达式的操作数,或者影响语句的执行顺序
赋值运算符
–简单赋值运算符 =
–复合赋值运算符
*= /= %= += -= <<= >>= >>>= &= ^= |=
关系运算符
–关系表达式的类型永远是布尔类型(bool).
–算术比较运算符 <, <=, >, and >=
–类型比较运算符 instanceof
例如: e instanceof Point //Point 是一个类
if、while语句使用布尔表达式或布尔值(true or false)作为条件进行控制:
int a = 1;
if (a) //错误的
{
// do something;
}
注意:Java是不允许将一个数字作为布尔值使用
以下哪个关系表达式为true:
String s = “hello”;
//String s = new String(“hello”);
String t = “hello”;
//String t = new String(“hello”);
char c[] = {‘h’,’e’,’l’,’l’, ‘o’};
A. s.equals(t);
B. t.equals(c);
C. s==t;
D. t.equals(new String(“hello”));
E. t==c;
A、C、D是正确的。由于s和t并非使用new创建,它们指向内存池中的同一个字符串常量,因此其地址实际上是相同的,故答案C是也正确的。
逻辑运算符
–“与”运算 &&:
如果两个操作数的值都为true运算结果为true; 否则,结果为false.
–“或”运算 || :
如果两个操作数的值都为false运算结果为false;否则,结果true
–“非”运算符!
操作数的类型必须是布尔类型
如果操作数的结果为 false,则表达式的结果为true ,如果操作数的结果为 true则表达式的结果为 false
条件运算符 (表达式1?表达式2:表达式3)
–首先计算表达式1
–如果表达式1的值为 true, 则选择表达式2的值
–如果表达式1的值为 false,则选择表达式
3的值
类型转换
每个表达式都有类型,
如果表达式的类型对于上下文不合适
–有时可能会导致编译错误
–有时语言会进行隐含类型转换
扩展转换
–byte, short, int, long, float, double, char
–从一种整数类型到另一种整数类型,或者从float到double的转换不损失任何信息
窄化转换
–double, float, long, int, short, byte,char
–窄化转换可能会丢失信息
short s1 = 1; s1 = s1 + 1; 有问题吗?
s1 + 1 运算结果是int型的,这里需要强制类型转换。即 s1 = ( short )( s1 + 1 )