JVM-java虚拟机
JRE(java运行环境)-包含了JVM和java的核心类库(javaAPI)
JDK(java开发环境)-JRE和开发工具
字面量(先运算再赋值):
整数,小数,字符,字符串,布尔值,空值
变量:
两种数据类型:
一.基本数据类型(四类八种)
1.整数(默认0创建数组时)
byte,short,int(默认),long(l或L)
2.小数(默认0.0创建数组时)
float(后面加f或F),double(默认)
3.字符(默认空字符创建数组时)
char(2字节)
ASCII编码存储
0:48
a:97
A:65
在运算时自动提升为int类型
4.布尔类型(默认false创建数组时)
boolean(1字节)
二.引用数据类型(默认null)
字符串(String)
...
三.数据类型 变量名称 = 初始值
四.变量一定要有初始值
关键字(特殊含义的单词,不能用来命名)
1.都是小写
标识符(取名字,见名知意)
规则
1.只能由数字,字母,_,$,¥组成
2.不能是关键字
3.不能由数字开头
4.不能有空格
规范
1.变量采用小驼峰写法helloWorld
2.类名采用大驼峰写法HelloWorld
键盘录入:
Scanner sca=new Scanner(System.in);
int s=sca.nextInt();
Random:
Random ran=new Random();
int r=ran.nextInt(10);
.var有意想不到的惊喜(创建对象时)
类型转换:
1.隐式转换(数据范围从小到大)
1.byte,short,char到int;int到long;long到float;float到double
2.小的数据类型和大的数据类型运算,小的会提升到大的以后再进行运算。
3.特殊:byte,short,char三种数据类型(变量)在运算时无论是否有更高的数据类型,都会提升为int,然后再运算。
2.强制转换(范围从大到小)
目标数据类型 变量名 =(目标数据类型)值或变量
注意:有可能会发生精度丢失
算术运算符:
注意:java中整数运算只能得到整数,要得到小数,需要浮点数参与运算
自增:a++(先用后增),++a(先增后用)
自减:a--,--a
赋值运算符:
基本:=
拓展::+=,-=,*=,/=,%=
注意:拓展的赋值运算符都隐含了强制类型转换
关系运算符:(运算结果都为boolean类型,true或false)
>,<,==,...
逻辑运算符:(结果为boolean类型)
&,|,^,!
&&,||
三元运算符:
关系表达式?表达式1:表达式2;
流程控制语句分类:
顺序结构:
从上到下依次执行
分支结构:
if:
switch:
循环结构:
for:
while:
do...while:
switch:
switch(表达式){
case 值1:
...
break;
case 值2:
...
break;
default:
...
break;
}
switch语句的表达式可以是:
byte,short,int,char,JDK5以后可以是枚举,JDK7以后可以是String
注意:case中的break没有写,会出现case穿透的问题
死循环:
for(;;){},while(true){},do{}while(true);
跳转控制语句:
break:循环和switch;(结束语句)
continue:循环语句;(跳过本次循环,进行下一次循环)
集成开发环境:
把代码编写,编译,执行,调试等多种功能综合到一起的开发工具
数组:(存储同一种数据类型多个元素的容器)
数据类型[] 数组名
数据类型 数组名[]
1.动态初始化:
int[] arr=new int[5];
我们给定数组的长度,初始化值由系统决定
2.索引:
数组名[索引]
3.静态初始化:
int[] arr=new int[5]{1,2,3,4,5}
4.获取数组长度:
arr.length
内存:
栈内存:方法运行时,进入的内存,局部变量都存放于这块内存当中
堆内存:new出来的内容都会进入堆内存,并且会存在地址值
方法区:字节码文件(.class文件)加载时进入的内存
本地方法栈:调用操作系统相关资源
寄存器:交给CPU去使用
创建多个数组时
每new一次,在堆内存中,都是一块新的空间,堆内存中的空间地址不会出现重复的现象
引用数据类型在赋值时:
是将内存地址值进行了赋值
多个数组引用同一个内存空间时:
任何一个数组对象对元素进行修改,都会影响到其他数组对象
数组反转:
-i-1;
方法(分类管理,提高代码复用性):
就是一段具有独立功能的代码块,不调用就不执行
1.先创建,再调用
2.需要手动调用后才执行
public static 返回值类型 方法名(参数){
方法体;
return 数据;
}
方法重载(在同一个类中,方法名相同,参数列表不同,与返回值无关):
1.类型不同
2.个数不同
3.顺序不同(毫无意义,但也是重载)