java是由Sun公司在1995年推出的一门高级编程语言,是目前服务器首选编程语言.
Java语言的优势:
java的平台无关性,(依据JVM)
简单
是基于面向对象的编程语言
多线程
多线程的使用可以带来更好的交互响应和实时行为。多线程的简单性是Java成为主流服务器端开发语言的主要原因之一。
安全性
Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以构建防病毒,防篡改的系统。
技术结构:
JAVASE --- Java Standard Edition --java 标准版
JAVAEE --- Java Enterprise Edition -- java 企业版
JAVAME --- Java Micro Edition --- Java微型版
java开发包:
JDK --- Java Development Kit --- Java开发工具包,为Java程序的开发来提供基本的工具 --- 包含了工具包 + JRE
JRE --- Java Runtime Environment --- Java运行时环境,为Java程序的运行来提供基本的环境 --- 包含了JVM + 核心类库
JVM --- Java Virtual Machine --- Java虚拟机,是Java程序能够跨平台的前提
java到目前为止一共是53个关键字 --- 2个关键字没有使用:const/goto --- 保留字
用于定义数据类型的关键字 |
|
|
|
|
|
class | interface | byte | short | int | long |
float | double | char | boolean | void | enum |
用于定义数据类型值的关键字 |
|
|
|
|
|
true | false | null |
|
|
|
用于定义流程控制的关键字 |
|
|
|
|
|
if | else | switch | case | default | while |
do | for | break | continue | return |
|
用于定义访问权限修饰符的关键字 |
|
|
|
|
|
private | protected | public |
|
|
|
用于定义类、函数、变量修饰符的关键字 |
|
|
|
|
|
abstract | final | static | Synchronized(锁) |
|
|
用于定义类与类之间关系的关键字 |
|
|
|
|
|
extends | implements |
|
|
|
|
用于定义建立实例、判断实例的关键字 |
|
|
|
|
|
new | this | super | instanceof |
|
|
用于异常处理的关键字 |
|
|
|
|
|
try | catch | finally | throw | throws |
|
用于包的关键字 |
|
|
|
|
|
package | import |
|
|
|
|
其他修饰符关键字 |
|
|
|
|
|
native | strictfp | transient | Volatile(保证可见性) | Assert(断言) |
|
命名规则:
由字母(常见语言的基本字符)、数字、_、$组成(但是减少使用$)
虽然java支持中文命名,但是减少使用
数字不能开头
不能使用关键字
区分大小写
java的数据类型
java大致可分为基本数据类型和引用数据类型:
基本数据类型(8种):
- 数值型(6种)
整数型:byte 1个字节 -27~27-1
Short 2个字节
Int 4个字节
Long 8个字节
- 浮点型:
Float -单精度 4字节 -1038~1038
Double -双精度 8字节 -10308~10308 默认类型
- 字符型:
Char :2个字节 0~65535
- Boolean型:
True false :默认false
引用数据类型:
数组 [],类 class,接口 interface
java中的转义字符:
\t-制表符 table \r-回车 return \n-换行 next
\\-反斜杠 \ \’-单引号 \”-双引号
扩展:将字符转换数字的过程称之为编码 --- 编码表
ISO-8859-1 - 西欧码表 - 1个字节表示1个字符 a
gb2312 - 国标码 - gbk - 2个字节表示1个字符 - 收录了常见的简体汉字以及一部分常见的繁体汉字
Unicode编码体系 - 收录了世界上常见语言的基本字符 - 规定了一系列的编码规则 - utf-8-> 3个字节表示一个字符 utf-16 -> 2个字节表示1个字符
注意:规定无论哪张码表兼容西欧码表
数据类型的转换:
自动类型转换/隐式转换:
- 规律一:小的类型自动转化为大的类型
- 规律二:整数类型可以自动转化为浮点类型,可能会产生舍入误差
- 字符可以自动提升为整数
强制类型转换/显式转换:
- 规律一:当把大的类型转化为小的类型的时候,因为补码的换算问题,所以可能会产生一些想不到数据
- 规律二:小数在转化为整数的时候是舍弃小数位
运算符
注意:
1. byte/short/char在运算的时候自动提升为int
2. 整型在运算的时候保持类型不变
3. 小类型和大类型运算,结果一定是大类型
4. 任意整数/0 - ArithmeticException - 算术异常
任意非零数字/0.0 任意非零小数/0 - Infinity - 无穷大
0/0.0 0.0/0.0 0.0/0 - NaN - Not a Number - 非数字
5.% 取余运算:取余的结果正负看的是%左边的数据的正负,与左边数字符号相同
6.byte/short/char都可以参与自增运算
赋值运算符
byte、short、char可以参与运算。
除了=以外,其余的符号都要求这个变量先有值
注意:在java中不支持连等定义但是支持连等赋值
关系/比较运算符
注意:不支持连等的比较方式
逻辑运算符
&&:如果前边的表达式的结果为false,则后边的表达式不再运算,整个表达式的结果就确定为false
||:如果前边的表达式的结果为true,则后边的表达式就不再运算,整个表达式的结果就确定为true
注意:||如果在&&的前边可以把&&短路掉
位运算符
注意:位运算符针对整数的补码进行运算,所以运算结果也是补码
& | ^ << >> >>> ~取反
交换值的方式
- 异或法
Int i=5,j=9;
i=i^j;
j=i^j;
i=i^j;
二. 加减法
Int i=5,i=9;
i=i+j;
j=i-j;
i=i-j;
三. 追尾法
Int i=5,j=9;
Int temp=I;
i=j;
j=temp;
总结:三种方式的比较
异或法的效率是最高的。只能针对整数进行交换,局限性太大
加减法的效率是低于异或但是高于追尾。理论上可以交换数值类型,但实际上很少用于交换小数
追尾法的效率是最低的。可以交换任意一个类型的值
三元运算符
格式:逻辑值?表达式1:表达式2
执行顺序:先执行逻辑值,如果逻辑值为true,则执行表达式1;反之则执行表达式2;表达式1和表达式2的返回值类型必须相同。
运算符的优先级
一元>二元>三元>赋值