java可以处理多种数据,比如数字1,字符串“你好”,学生对象,将不同的数据进行分类,分为:
基本数据类型:不可再分的数据,全小写的英文字母,只有8种
整数: byte(字节) short(短整型) int(整型) long(长整型)
浮点数:float(单精度) double(双精度)
字符:char
布尔值:boolean 表示真假
引用类型: 描述实体数据
数组:相同类型的多个数据
类 :不同类型的多个数据
枚举:指定的多个数据
内存
程序运行的第一步需要将数据加载到内存中,提前将内存编址,数据加载时从内存中挑出能够存放下数据的一段空间。
在内存中存储数据开辟内存空间
1)有地址给地址起别名,别名称为变量名
2)有空间大小,由变量类型决定
在此空间中存储的值有范围,通过变量名存取
byte 1字节(8位) -128~127 -2^7~2^7-1
short 2字节(16位) -32768~32767 -2^15~2^15-1
int 4字节(32位) -2147483648~2147483647 -2^31~2^31-1
long 8字节(64位) -2^63~2^63-1
float 4字节 -3.4*10^38~3.4*10^38
double 8字节 -1.7*10^308~1.7*10^308
char 2字节 0-65535 0~2^16-1
boolean 1位 true、false
定义变量:
格式:数据类型 变量名= 变量值;
byte age = 22
在内存中申请1字节的空间,并起名为age,在这段内存中存入22这个值
整型
程序运行期间不可再变,常量不可变
1、整型常量的3中表示形式:
10进制 22
2进制整数,以0b开头,例如0b011 (对应于十进制的3 ) (JDK7.0开始)。
8进制 使用8进制数直接给变量赋值 ,给8进制数加前缀0 0722
16进制 使用8进制数直接给变量赋值,给16进制数加前缀0x 0x12f3
8进制 每3位二进制转换为1位8进制
16进制 每4位二进制转换2为1位16进制
java中的整型常量默认为int,可以在常量数的末尾加l或L,将常量改为long类型.
浮点类型
1、常量
默认为double,若需要是float,则在数的末尾加f或F
常量的表示分为10进制和科学计数
10进制: 3.14 314.0 0.314(.314)
科学计数: 3.14e0 3.14e2 3.14e-1
字符类型
char 类型16位unicode字符
1、常量
是用单引号’’括起来的单个字符 ‘A’ ‘我’ ‘9’ ‘+’ 所有可以显示的都可以看作是字符
还包含一些不能显示的字符.
每个字符在内存中都用整数代替
‘a’->97 ‘b’->98 … 小写字母连续
‘A’->65 ‘B’->66 … 大写字母连续
‘0’->48 ‘1’->49 … 0-9字符连续
特殊符号:换行 制表 单引号 双引号 使用转义字符\ 将后面的字符转变为其他含义
‘\n’ 换行 ‘\t’制表符 ‘\r’回车 ‘\’’单引号 ‘\”’双引号 ‘\’ 斜杠
数据类型
Java的数据类型可分为两大类:
1 基本数据类型(8个):byte、short、int、long、double、float、boolean、char
低—————————————————————————————–>高
byte —–> short/char ——-> int ——> long —–> float ——-> double
赋值时小的数据类型值可以赋给大的数据类型的变量。
右边给左边赋值,右边可以是常量、变量、表达式,左边只能是变量。
将整型常量int赋值给byte short char时,
只要不超过byte/short/char的表示范围都可以赋值。
char表示16位的unicode字符,可以使用unicode编码表示字符,
使用16进制表示 ‘\uxxxx’ 比如’\u0061’ 表示‘a’
2 引用数据类型:类、接口、数组、枚举、注解
数据的运算
1)算术运算
1、+ - * 对两个数的运算,得到的结果跟小学的计算方式相同
2、/ 除法 整数的除法截取整数部分,小数除法保证两个操作数至少一个是浮点,结果才为浮点
3、% 取余数 一般对整数取余,对浮点数的取余使用浮点的整数部分取余再加上浮点的小数部分(不要这样写)。
4、++ – 自加,自减 对单个变量进行加1或减1的操作
前加,后加,前减,后减
做为单独的一条语句没有区别 i++; 和++i; 没有区别,结果都是i增加了1
若i++或++i做表达式,参与其他的运算,对其他的运算有影响
int i = 5;
int j = 2;
j=i++;//后加,先取i值参与运算,在对i加1
System.out.printLn("i = "+i+",j = "+j)
输出: i = 6 , j = 5
int i = 5;
int j = 2;
j=++i;//前加,先对i加1,在取i值参与运算
System.out.printLn("i = "+i+",j = "+j)
输出: i = 6 , j = 6
运算结果要有类型,参与运算的有多个数,结果类型向大的靠齐,
byte、short、char在运算时先转为int再运算。
int/long/float/double 跟自己相同的类型运算,结果还是int/long/float/double
类型不同的运算,结果向大的靠齐。
运算符的优先级:
1、算术运算(++ – ,*/% , + -)
2、关系运算
3、逻辑运算 (! , && ||)
4、条件运算
5、赋值运算
优先级相同时是自左向右执行,(赋值运算是自右向左执行)
流程控制
代码执行的过程,顺序结构、选择结构、循环结构
顺序结构:按照代码编写的顺序逐行执行,这些行代码都会被执行,且执行一次。
选择结构:按照条件,某些代码可能会被执行一次,某些代码可能一次都不执行。
循环结构:按照条件,某些代码可能会被重复执行多次。
放在方法中编写
选择结构
一、if-else语句
if(条件布尔类型的表达式){
若条件成立需要执行的语句
}else{
条件不成立需要执行的语句
}
1、单个if()
if(条件){
语句
}
当条件成立则执行语句,否则不执行
2、嵌套的if-else
if(条件布尔类型的表达式){
if(条件布尔类型的表达式){
若条件成立需要执行的语句
}else{
条件不成立需要执行的语句
}
}else{
if(条件布尔类型的表达式){
若条件成立需要执行的语句
}else{
条件不成立需要执行的语句
}
}
3、if-else-if
if(条件布尔类型的表达式){
若条件成立需要执行的语句
}else if(条件布尔类型的表达式{
条件不成立需要执行的语句
}else if(条件布尔类型的表达式{
条件不成立需要执行的语句
}else{
}
二、switch-case语句
switch(a){ //a可以是byte,short,char,int java1.8之后也支持String
case const1:
程序片段1
break;
case const2 :
程序片段2
break;
default :
程序片段3
}
执行过程:
先计算表达式的值,选择跟该值相等的一个case(仅比较一次)开始执行,
若没有相等的值结束switch语句,若有default先执行default再结束
一般用于比较计算出的某个值能取若干值中的某一种时,会选择switch-case
使用switch-case语句要注意:
1、switch() 中的类型 byte short char int java1.8之后也支持String
2、const1/const2… 只能是常量
3、break语句用于结束switch-case
4、case 可以有多个,不限位置,default可选不限位置
5、case后的常量值不能重复
循环结构
反复执行一部分代码
循环分类:
for while do-while三大循环结构
循环中的break和continue
continue:继续,跳过某个循环语句块的一次执行,继续下一次循环
break:跳出当前循环循环
for:
表达式1:循环开始的表达式
表达式2:循环是否需要继续的表达式, 表达式2结果为true则继续循环,为false则结束循环
表达式3:使表达式2趋向结束的表达式
循环体 :反复执行的代码
for(int i=0;i<10; i++){
....
}
while:
int i = 0;
while(int i <2){
....
i++;
}
do-while:
int i = 0;
do{
i++;
迭代
}while(i<2);