Java
**Java是一个平台**
JVM java virtual machine java虚拟机(用软件模拟硬件)
JRE java runtime environment java运行时环境
JDK java development kit java开发工具包
目录:bin
jar.exe 打jar包
java.exe 执行java字节码程序->启动虚拟机
javac.exe 编译java源程序->生成字节码程序
javadoc.exe 生成文档
**Java能做什么**
JavaSE Client/Server
JavaEE WebApp
JavaME 嵌入式
**Java语言是一门唯一可以运行在Java平台的语言**
**Java是一门跨平台(write once, run anywher)的面向对象的编程语言**
跨平台:一套代码可以在不同的操作系统上运行
通过JVM实现跨平台:翻译
源码=编译=>字节码=虚拟机=>执行
**Java程序的结构**
基本单元:类
类的语法结构:
public class 类名{}
类名命名规则
//1、只能由字母,数字,下划线,$,¥
//2、不能以数字开头,一般以大写字母开头,每个单词首字母大写
//3、见名知意
//4、公共类类名必须和文件名一致
程序入口
public static void main(String【】 args){}
控制台输出
System java内置对象
System.in java标准输入流
System.out java标准输出流
System.out.print("内容"); 输出不换行
System.out.println("内容"); 输出后换行
输出转义符 “\?”
\n : 换行符
\t : 制表符(8个字母,4个汉字)
字节:bit :0/1 byte:0~255/-128~-127
Java中为了兼容中文采取双字节编码
**java变量**
房间类型 数据类型
地址房号 变量名称
入住 赋值
java数据类型
基础类型
字符类型
单字符
char '?'(单引号中必须要有一个并且只能有一个符号)
字符串
String ""(长度0~:受限于内存)
数值类型
整数
byte:0~255/-128~127 1个字节
short:-32768~32767 2个字节
int:±21亿 4个字节
long: 8个字节
BigInteger
小数
float:近似类型
double:
BigDecimal:精确类型
布尔类型
布尔
bit 0/1
boolean false/true
引用类型
**java变量使用三步骤**
1、声明
语法:数据类型 变量名称;
变量命名的规范
1、只能由字母,数字,下划线,$,¥
2、不能以数字开头,驼峰命名法
3、见名知意
4、公共类类名必须和文件名一致
2、赋值
变量名称 = 值;
3、使用
变量名称1 = 变量名称1+变量名称2
System.out.println(变量名称1)
1+2组合:数据类型 变量名称=值;
同一个类型,多个变量:数据类型 变量1,变量2。。。
**java常量:final 数据类型 常量名称 = 值;**
常量名称:不能以数字开头,全部字母大写
**数据类型转换**
算术表达式的最终类型取决于表达式中的最大类型
向上转型:小转大,自动类型转化
float a = 1;
byte a = 120;
int b = a.
向下转型:大转小,强制类型转换
float a = 1.0f;
float a = (float)(1+1.0);
long a = 12345678L;
**java控制台输入**
1、导入类:
improt
2、创建工具对象
Scanner input = new Scanner(System.in)
3、控制台接受用户输入值
xxx 变量名 = input.nextXxx();
**运算符**
算术运算符
+ - * / %
++ --
a++ 先取值后运算
++a 先运算后取值
+= -= *= /=
a=a+1 = a++/++a = a+=1
a=a+N = a+=N
算术表达式的最终类型由表达式中最大类型决定
关系运算符
> < >= <= == !=
关系表达式最终结果为 Boolean
1>2 false
int a = ?
a>=3 true
逻辑运算符
&& //逻辑与 二元短路与 都为true为true,否则为false
|| //逻辑或 二元短路或 都为false为false,否则为true
! //逻辑非 前置一元运算符 !true=false/!false=true
短路:逻辑表达式左侧表达式的结果能够确定最终结果,右侧表达式不予执行
赋值运算符
= //从右向左执行
三元运算符m
xxx val = boolean ? V1 : V2;
**分支结构**
单分支
if(条件){代码}
双分支
if(条件){代码}else{代码}
多分支
if(条件){代码}else if(条件){代码}...else{代码}
switch(){case 常量1:代码1...default:代码 break}
if做区间条件,switch做等值条件
贯穿现象,只支持long一下的整数,jdk1.8之后开始支持String
**嵌套分支**
if(){
if(){}
switch(){}
}
**循环**
概念:重复性操作
四要素:
1、循环变量的声明和初始化
2、循环条件的构建
3、循环体
4、循环变量的更新
**使用循环解决问题**
1、是否存在重复性操作
2、如果存在,确定四要素
3、选择循环的机构,再套用其语法
while 和 do...while 循环次数不确定的循环
while 先判断后执行
do...while 先执行后判断
for 循环次数确定
4、确认循环是否能够正常结束
**基础循环**
while(条件){循环体}
do{循环体}while(条件);
for(循环变量的声明和初始化;条件;循环变量的更新){循环体}
循环跳转语句
continue:结束本次循环,进入下一次循环
break:结束循环
**增强循环**
for(xxx v : arr){
v[]//只能看,不能改
}
**迭代循环**
概念:迭代算法是用计算机解决问题的一种基本方法,它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。
**一维数组**
变量概念:一种存储空间的表示
数组概念:一组类型相同的连续的存储空间的表示
优点
1、类型相同:不用考虑类型
2、连续:遍历
缺点
1、类型相同:无法解决不同类型多个值的存储
2、连续:插入,移除
**数组使用步骤**
1、声明 xxx[] array;
2、分配空间 array = new xxx[int LENGTH];
3、赋值 array[int INDEX] = VALUE;
4、使用 System.out.println(array[int INDEX])
**数组的属性**
1、不可变
2、长度固定:int len = array.length;
3、下标(索引):0~array.length-1:如果超出范围会报异常
**特殊语法**
1+2+3:xxx[] array = {VALUE1,VALUE2...};
int[] arr = {};
int[] arr2 = {5,7,9};
int[] arr3 = new int[]{5,7,9}