java特性和优势
- 简单
- 面向对象
- 可移植性 跨平台 JVM
- 高性能
- 分布式
- 动态性 反射
- 多线程
- 安全性
- 健壮性
天时地利人和 造就了java的成功
java三大版本
- javaSE:标准版(桌面,控制天开发)
- javaME:嵌入式开发(手机,小家电)
- javaEE:企业级开发(web端,服务器开发)
JDK、JRE、JVM
- JDK::java development kit
- JRE:java runtime environment
- JVM:java virtual machine
Hello,World!
- 新建一个java文件
文件后缀名为.java - 编写代码
public class Hello{
public static void main(String[] args){
System.out.print("Hello World!");
}
}
- 编译javac java文件,会生成一个class文件
- 运行class文件,java class文件
可能出现的问题
- 每个单词的大小要注意,Java是区分大小写的
- 尽量使用英文
- 文件名和类名必须保持一致,并且首字母大写
- 符号使用中文
Java程序的运行机制
编译型
解释型
Java基础语法
注释、标识符、关键字
- 注释
- 单行注释
- 多行注释
- 文档注释
-
标识符
-
关键字
关键字 | 含义 |
---|---|
abstract | 表明类或者成员方法具有抽象属性 |
assert | 断言,用来进行程序调试 |
boolean | 基本数据类型之一,声明布尔类型的关键字 |
break | 提前跳出一个块 |
byte | 基本数据类型之一,字节类型 |
case | 用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
char | 基本数据类型之一,字符类型 |
class | 声明一个类 |
const | 保留关键字,没有具体含义 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
do | 用在do-while循环结构中 |
double | 基本数据类型之一,双精度浮点数类型 |
else | 用在条件语句中,表明当条件不成立时的分支 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 基本数据类型之一,单精度浮点数类型 |
for | 一种循环结构的引导词 |
goto | 保留关键字,没有具体含义 |
if | 条件语句的引导词 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
int | 基本数据类型之一,整数类型 |
interface | 接口 |
long | 基本数据类型之一,长整数类型 |
native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
short | 基本数据类型之一,短整数类型 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
switch | 分支语句结构的引导词 |
synchronized | 表明一段代码需要同步执行 |
this | 指向当前实例对象的引用 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile | 表明两个或者多个变量必须同步地发生变化 |
while | 用在循环结构中 |
数据类型
-
强类型语言
- 要求变量的使用要严格符合规定,所有的变量都要先定义后才能使用
-
弱类型语言
-
Java的数据类型(两大类)
- 基本类型(primitive type)
- 引用类型(reference type)
类型转换
- 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
低---------------------------------------------------->高
byte,short, char -> int -> long ->float -> double
- 运算中,不同的类型先转化为同一类型,然后进行运算,
- 强制类型转换
- 自动类型转换
public class Demo2 {
public static void main(String[] args) {
// 操作比较大的数的时候,注意溢出问题
// jdk7新特性, 数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money * years; // -1474836480, 计算的时候溢出了
long total2 = money * years; //默认是int,转换之前已经存在问题了
long total3 = money * (long) years; //默认是int,转换之前已经存在问题了
System.out.println(total);
System.out.println(total2);
System.out.println(total3);
}
}
变量、常量
- 变量是什么,就是可以变化的量!
- Java是一种强类型语言,每个变量偶读必须声明其类型。
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
public class Demo03 {
//类变量 static
static double salary = 2500;
// 属性:变量
// 实例变量:从属于对象;如果不进行初始化,这个类型的默认值
// 布尔值:默认值是false
// 除了基本类型,其余的默认值都是null;
String name;
int age;
public static void main(String[] args) {
// 局部变量;必须声明和初始化值
int i = 10;
System.out.println(i);
//变量类型 变量名字 = new Demo03();
Demo03 demo03 = new Demo03();
System.out.println(demo03.age);
System.out.println(demo03.name);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add() {
}
}
- 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
- 所谓常量可以理解成一种特殊的变量,它的值呗设定后,在程序运行过程中不允许被改变。
- 常量名一般使用大写字符。
//修饰符,不存在先后顺序
static final double PI = 3.14;
运算符
- 算数运算符:+, -, *, /, %, ++, –
- 赋值运算符:=
- 关系运算符:>, <, >=, <=, ==, !=instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^, >>, <<, >>>(了解)
- 条件运算符:?:
- 货站赋值运算符:+=, -=, *=, /=
// 位运算符
public class Demo04 {
public static void main(String[] args) {
/*
* A = 0011 1100
* B = 0000 1101
* -----------------
* A&B = 0000 1100
* A|B = 0011 1101
* A^B = 0011 0001
* ~B = 1111 0010
*
* 2*8 = 16 2*2*2*2
* 效率极高
* << *2
* >> /2
* */
System.out.println(2<<3);
// 16
}
}
//字符串拼接
public class Demo05 {
public static void main(String[] args) {
int a = 5;
int b = 20;
a+=b;
a-=b;
System.out.println(a);
// 字符串连接符 + , String
System.out.println(a+b);
System.out.println("lai"+a+b+"lin");
// lai520lin
System.out.println(a+b+"lin");
// 25lin
}
}
//三元运算符
public class Demo06 {
public static void main(String[] args) {
// x ? y : z
// 如果x==true,则结果为y,否则为z
int score = 50;
String result = score < 60 ? "不及格" : "及格";
System.out.println(result);
}
}
包机制、JavaDoc
- 为了更好的组织类,java提供了包机制,用于区别类名的命名空间
- 包语句的语法格式为:
package lai.operator;
//package pkg1[.pkg2[.pkg3...]];
import java.util.Date;
//import package1[.package2...].(classname|*);
- javadoc命令是用来生成自己的API文档的