Java SE :基础语法
一、常量与进制
1. 常量
概念:用关键字final修饰的变量
特性:一旦被赋值则不能更改;名称一般全大写
Java中的常量位于JVM(java虚拟机)–方法区–常量池
2. 整数进制
2.1 整数的表示方法
进制 | 表示方法 |
---|---|
八进制 | 0-7 ,满8进1. 用0开头表示 |
十进制 | 0-9 ,满10进1. |
十六进制 | 0-9,A-F,满16进1. 用0x开头表示 |
二进制不是整数常量的表现形式,只是这些整数常量在计算机中的表现
2.2 进制转换
N进制转十进制:乘以N的幂数(二进制101转换为十进制,1x22+0x21+1x20=5)
十进制转二进制:除以二倒取余数(6/2=3余0,3/2=1余1,6的二进制表示为110)
十进制转八进制:先转为二进制,三个二进制一组(不够三个的可以在二进制前补零)表示一个八进制的数值,从前到后依次写出即为所求
十进制转十六进制:先转为二进制,四个二进制一组(不够四个的可以在二进制前补零)表示一个十六进制的数值,从前到后依次写出即为所求
负数的二进制表现形式:对应的整数二进制取反加1
二、变量
变量的概念:
• 内存中的一个存储区域
• 该区域有自己的名称(变量名)和类型(数据类型)
• 该区域的数据可以在同一类型范围内不断变化
为什么要定义变量:
• 用来不断的存放同一类型的常量,并可以重复使用
使用变量注意:
• 变量的作用范围(本对{ }之间有效)
• 初始化值
• 变量的名称要有意义
定义变量的格式:
第一种:
•数据类型 变量名 = 初始化值;
第二种:
•数据类型 变量名;
•变量名 = 值; (这一步一定要有,否则编译不通过)
1. 基本数据类型
Java中基本数据类型有八种:
byte, short, int, long, float, double, char, boolean
整数默认为int,小数默认为double
1.1 整型
表示整数,默认值均为 0
数据类型 | 字节数 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
位: bit, 计算机中最小储存单元,表示一个二进制位
字节: 1字节= 8bit
byte 的范围为[-128, 127]
1.2 浮点型
表示浮点数,即指数形式的小数,默认值为 0.0
数据类型 | 字节数 |
---|---|
float | 4 |
long | 8 |
float精确度为小数点后6-7位
double精确度为小数点后15位
1.3 字符型
表示一个字符,用单引号来标识,默认值为\u0000
char ch = 'A';
根据编码方式的不同,一个字符所占的字节数也不同
Java中字符使用Unicode编码,一个字符占据两个字节
但具体编码方式还需具体分析
ASCII编码: 一个英文字符占1个字节,一个中文字符占2个字节
UTF-8编码: 一个英文字符占1个字节,一个中文字符占3个字节
GBK编码: 一个英文字符占1个字节,一个中文字符占2个字节
1.4 布尔型
表示“真”或“假”,默认值为flase
boolean型仅由false和true表示
boolean b1 = false;
boolean b2 = true;
1.5 基本数据类型的封装类
基本数据类型 | 封装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
封装类为各个基本数据类型提供一些数据的操作方法,可以直接使用
如:
//String转换为int
String str = "4";
int a = Integer.parseInt(str);//a=4
1.6 基本数据类型的相互转换
自动数据类型转换
实线代表转换时无精度损失,虚线代表转换时有精度损失
-
表达式中的数据类型自动提升
- 所有的byte型、short型和char型的值将被提升到int型
- 如果一个操作数是long型,计算结果就是long型
- 如果一个操作数是float型,计算结果就是float型
- 如果一个操作数是double型,计算结果就是ldouble型
数据类型强制转换
double a = 1.222;
int b = (int)a;//b = 1
2.引用数据类型
引用数据类型是一个指向某个地址的变量,默认值为null
Java中引用数据类型有三种:
数组、 类、 接口
//创建一个长度为5的数组,数组内储存的都是int类型的数据
int[] arr = new int[5];
//创建一个Object类型的对象
Object o = new Object();
//定义一个Interface类型的接口引用数据类型
Interface inf ;
3.运算符
3.1 算数运算符
算术运算符的注意问题
• 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模
数是负数就另当别论
• 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时
,只保留整数部分而舍弃小数部分。例如:int x=3510;x=x/1000*1000; x=3000
• “+”除字符串相加功能外,还能把非字符串转换成字符串
3.2 赋值运算符
= , +=, -=,*=, /=, %=
int a,b,c;
a = b = c = 3;//java支持连续赋值
int a = 3;
a += 5;//a = a + 5 = 8
但是要注意的是表达式中可能会出现的数据类型转换,如
byte a = 127;
byte b = 1;
a = a + 1;//Error,等号左边的a为byte类型,等号右边a+1,Java在进行精度小于int的运算时自动提升为int型,int不能自动转换为byte
a = a + b;//Error,原因同上
a += 1;//a = -128,java先使用int型计算a+1,然后将其强制转换为byte
a += b;//a = -128,同上
3.3 比较运算符
• 比较运算符的结果都是boolean型,也就是要么是true ,要么是false
• 比较运算符“==”,赋值运算符“=”
3.4逻辑运算符
• 逻辑运算符用于连接布尔型表达式,在Java中 3<x<6应该写成x>3 & x<6。
• “&”和“&&”的区别:单 &时,左边无论真假,右边都进行运算;双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
• 异或( ^ )与或( | )的不同之处是:当异或左右都为true时,结果为false;或反之。
3.5 位运算符
位运算符直接对二进制进行运算
3.6 三元运算符
格式
• (条件表达式 )?表达式1:表达式2;
• 如果条件为true,运算后的结果是表达式1;
• 如果条件为false,运算后的结果是表达式2;
int x = 3;
int y = 4;
int z;
z = (x>y)?x:y;//z为x,y中较大的数
3.7 枚举类型
enum name
{
值1,值2, ...
}
三、控制流程
1.判断结构
1.1 if语句
if语句有三种格式
//第一种格式
if(条件表达式)
{
执行语句;
}
//第二种格式
if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
//第三种格式
if(条件表达式)
{
执行语句;
}
else if
{
执行语句;
}
......//可有多个else if
else
{
执行语句;
}
• 条件表达式都是单条语句,条件表达式的结果只能为真或假
• 第二种格式与三元表达式的区别:三元运算符运算完成后会得到一个值,而第二种格式不会
2.循环结构
2.1 for语句
for(初始化表达式; 循环条件表达式; 循环后的操作表达式)
{
执行语句;
}
• for循环中几个语句的运行顺序:首先只读一次初始化表达式–判断循环条件,为真则执行循环语句–执行循环后的操作表达式–判断循环条件,为真则执行循环语句…直到循环条件表达式为假则循环结束
• while循环与for循环可以互换,区别在于for为了循环而定义的变量在for循环结束后就在内存中释放,while为循环而定义的变量在循环结束后仍然可以继续使用
2.2 while语句
while(条件表达式)
{
循环语句;
}
2.3 do while语句
do while(条件表达式)
{
循环语句;
}
do while 与while 的区别:无论条件表达式是否为真,do while 语句总是会执行一次循环语句,而while只有在条件表达式为真的情况下才会执行循环语句
3.选择结构
3.1 switch语句
switch 语句将从与表达式所匹配的case标签处开始执行,直到执行到break或执行到switch的结束处后跳出结构体。如果没有匹配的case标签,而有default语句,那么执行default语句
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
...
default:
执行语句;
break;
}
• case的标签:char, byte, short, int的常量表达式;枚举常量;java SE 7后的字符串
编程中避免使用此种结构体
4.中断控制流程语句
4.1 break语句
break语句用于循环结构和选择结构中,表示退出此结构体
• break语句有一种带标签的形式,用来跳出多重循环
4.2 continue语句
用于结束本次循环,进行下一次循环