Java特性与优势:
简单性、面向对象、可移植性
高性能、分布式、动态性
多线程、安全性、健壮性
“三高”
高迸发、高可用、高性能
JDk、JRE、JVM:
JDK:(Java Development Tookit):Java开发工具包,是整个java核心,包含了java运行环境(JRE, java runtime environment),以及java工具和java基础类库
JVM:(Java Virtual Mechinal):Java虚拟机,是JRE的一部分,是一个虚拟出来的计算机,是通过实际计算机上仿真模拟各种计算机功能来实现的,JVM有自己完善的硬件架构,如处理器,堆栈,寄存器等,还具有相应的指令系统。JVM的主要功能是解释自己的指令集(即字节码),并映射到本地的CPU的指令集或os系统调用,JAVA原始跨平台使用的,其实就是不同的操作系统使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台行。JVM对上层的Java原文件不关心,他关注的只是由源文件生成的类文件(class file),类文件组成包括JVM指令集,富豪以及一些不住信息
JRE::JAVA运行环境
在window下的第一个JAVA程序
-
1、新建一个文件夹,存放代码
-
2、新建一个JAVA文件
- 文件后缀名为.java
- Hello.java
- [注意点]系统可能没有显示文件后缀名,我们需要手动打开
-
3、编写代码(Hello World)
public class Hello{ public static void main(String[] args){ System.out.print("hello world!"); } }
-
4、编译javac java文件,会生成一个class文件
-
5、运行class文件, Java class文件
常见问题
- 每个单词的大小不能出现问题,JAVA大小写敏感
- 尽量使用英文;
- 文件名和类名必须保证一致
- 符号使用了中文
JAVA运行机制
编译型
解释型
运行机制
源程序 -> JAVA编译器 -> 字节码(*.class文件)-> 类装载器 -> 字节码校验器 -> 解释器 -> 操作系统
可以用中文命名
数据变量
强类型语言
所有变量都必须先定以后才能使用 (安全性高、速度慢)
弱类型语言
(与强类型相反)
数据类型分为:
1、 基本类型
整数类型
byte占一个字节范围
shot占两个字节范围
int占四个字节范围
long占八个字节范围(在数字后面加L)
浮点类型
float占四个字节(Lfloat类型要在数字后面加个F)
double占八个字节
字符类型
char占两个字节
(String)不是关键字,是类
boolean类型
占1位 只有 true和flase
2、引用类型
类、接口、数组
位(bit):是计算机饿你不数据存储的最小单位,
字节(byte):是计算机中数据处理的基本单位,习惯上大写B来表示
1B(byte,字节)=8bit(位)
字符:是指计算机中呢使用的字母,数字,字和符号
银行等需要用 BigDecimal类
所有的字符本质还是数字
编码 Unicode 2字节 极限:65536
//转义字符
类型转换
由低到高
byte,short,char -> int -> long -> float -> double
运算中,不同类型的数据先转化为同一类型,然后进行运算
强制类型转换 (类型)变量名 高——低
自动类型转换 低——高
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 再把高容量转换到底容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
JDK7新特性,数字之间可以用下划线分割
在编程过程中 用大写L来表示
变量
变量就是可以变化的量
JAVA是一种强类型的语言,每个变量都必须声明其类型
JAVA变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须一分号结束
作用域
- 类变量(static)
- 实例变量(从属对象)如果不自行初始化,输出这个类型的默认值、布尔值;默认是false、除了基本类型,其余的默认值都是null
- 局部变量(必须声明和初始化值)
常量
- 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值
- 所谓敞亮可以理解成一种特殊的变量,他的值被设定后,在程序运行过程中不允许被改变
- 常量名一般使用大写字符
- 修饰符不存在先后顺序
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary除了第一个单词以外,后面的单词首字母大写(eg:lastName)
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX——VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runNow()
运算符
- 算术运算符 +、-、*、/、%(模=取余)、++、--
- 赋值运算符 =
- 关系运算符 >,<,>=,<=,==,!=instanceof
- 逻辑运算符 &&、||、!(短路运算)
- 位运算符 &(有0即0),|(有1即1),^(同0异1),~(取反),(左移)>>,(右移)<<,>>>(只和二进制有关 )
- 条件运算符 ?:
- 加法=二元运算符
- Ctrl + D :复制当前行到下一行
- a++ 执行完这行代码后,先给b赋值,再自增(省略了a = a+1)
- ++a 执行玩这行代码钱,先自增,再给b赋值
- 字符串连接符 +两边有String类型数据就为连接符(如果String类型在最后则不会影响结果)
优先级()
- ()
- ! ++ --
- */ %
- +-
- < <= > >=
- == !=
- &&
- ||
总结:算术 > 关系 > 逻辑
包机制
-
为了更好的地组织类,Java提供了包机制,用于区别类名的命名空间
-
包语句的语法格式为:
Pack pkg1[.pkg2[.pk3...]];
-
一般利用公司域名倒置作为包名:com.baidu.www
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用"import"语句可完成此功能
-
*(通配符)
JavaDoc
javadoc命令是用来生成自己API文档的
参数信息
- @author 作者名
- @version 版本名
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @throws 异常抛出情况
用户交互
-
Java.util.Scanner是Java5的新特性,我们可以通过Scanner类来获取用户的输
- Scanner s = new Scanner(System.in);
-
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否有输入的数据
-
next()
- 一定要读渠道有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
-
nextLine()
- 以Enter为结束符也就是说nextLine()方法返回的是输入回车之前的所有字符
- 可以获得空白