一、常量与变量#直接量
生活中用到的数值,例如:
整数数值:1,23,454 等;
小数数值:3.14,2.3e4 等;
字符型数值:‘a’,‘b’ 等;
布尔型数值: 用来表示真假值,true 、false。
String类型:用双引号括起来的多个字符序列,“move all", ”哈哈“。
null类型:null
变量:是一个保存数据的内存区域的名字。系统在变量定义时为其分配内存空间。
java语言是个强类型语言,所有变量必须显示声明类型。
当数据不确定时,应用。
声明变量语法:
type:数据类型
varName:变量名
如:int i;
两种变量声明方式:
常量:代表程序运行过程中不能改变的值,也就是说,第一次赋值后,不能再赋值。
常量一般都大写
声明常量的语法:
1
final type varName;
所有常量、变量必须先声明,后使用
二、变量分类#按作用域:成员变量和局部变量 ——讲对象的时候讲
局部变量
代码块内有效
代码块 {}
方法体内有效 —— 讲方法的时候讲
按数据类型:
基本数据类型:包括整形(byte、short、int、long)、浮点型(float、double)、布尔类型(boolean)、字符型(char)
引用数据类型:包括类、接口、数组类型以及空类型
三、基本数据类型#整数型:包括字节型(byte),短整型(short),整型(int),长整型(long), 它们有符号整数
浮点型:包括浮点型(float),双精度型(double),它们代表有小数精度要求的数字
字符型:包括字符型(char),它代表字符集的符号,例如字母和数字
布尔型:包括布尔型(boolean),它是一种特殊的类型,表示真/假值
(一)整数类型
bit:位
一个二进制数据0或1,是1bit;byte:字节
一个字节等于8位。其中定义long类型时,要在整数常量后增加L或l,建议用L,容易区分,如
long value = 103432544354356L;
1、整数字面量表示
十进制:默认的,逢10进1
如:int i= 125;
八进制:整数之前加数字0来表示,逢8进1
如:int j = 071;
十六进制:整数之前加“0x”或“0X”,其中10~15分别以a~f表示(不区分大小写),逢16进1
如:int i = 0xa;
二进制(新加的):整数之前加“0b”或“0B”,逢2进1
如:int j = 0b101;
十进制转二进制方法
这是一个连续除以2的过程:把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。
如:十进制的6转成二进制 110
二进制加法0b11+0b10 = 0b101,加法方式逢二进一
十进制的30,转换成二进制、八进制、十六进制
二进制转十进制方法
用二进制数值乘以2的幂次依次相加
如:二进制110转换成十进制6
20 0 + 21 1 + 22 * 1 = 0 + 2 +4 = 6
八进制、十六进制与十进制互转原理与二进制一样
将之前十进制的30 转换成其他进制,再转换回十进制
代码示例:
(二)浮点型
浮点型有两种:double 和 float
double:双精度浮点数,一个double类型的数值占8个字节、64位
float:单精度浮点数,一个float类型的数值占4个字节、32位
浮点字面量表示:标准记数法或科学记数法
double pi = 3.14;
double sd =5e-12;
double r = 8E2;
浮点字面量默认是双精度。字面量后面加F或f 表示单精度
float f = 1.1f;
如果要精确计算浮点数(保留几位小数),则要用BigDecimal类(常用于计算金额)
代码示例:
(三)字符型
类型:char
占2个字节
字符型常量的三种表现形式
1、直接通过单个字符来指定字符型常量,例如:‘a'、'1'等
2、通过转义字符表示特殊字符型常量,例如:’\n‘、'\t'等
3、直接使用Unicode值来表示字符型常量,格式是'\uXXXX',其中XXXX代表一个十六进制的整数
范围是'\u0000'~'\uFFFF',共可以表示 65535个字符java语言常用的转义字符
除此之外,char类型的值可以直接作为整数类型的值来使用,表数范围0~65535
如:char value = 99;
转义字符示例:
运行结果
(四)布尔型
布尔型只有一个boolean类型,用于表示逻辑上的“真” 或 “假”,不能用 0 或者 非0 代表。
true 真
false 假
如:boolean flag = true;
boolean应用流程控制
1 if条件控制语句
2 while循环控制语句
3 do循环控制语句
4 for循环 控制语句
5 三目运算符(? :)中使用
四、类型转换#在java程序中,不同的基本类型的值 经常需要进行相互转换。
类型转换分为自动类型转换和强制类型转换
(一)自动类型转换
当把一个表数范围 小的数值或变量直接赋给另一个表数范围大的变量时,系统可以进行自动类型转换。
自动向范围大的类型转换 ,混合运算时转成最大的范围类型。
如同将小瓶水倒入大瓶没有问题一样
byte、short 不能自动转换成char
char不能自动转换成byte、short
代码示例:
如同将大瓶子中的水倒入小瓶子,两种结果
①大瓶子中的水 ≤ 小瓶子中的水,小瓶子能承下(强转没问题)
②大瓶子中的水>小瓶子中的水,水溢出(强转会发生截断(按模取余)或者可能溢出)
能强转成功的前提:类型大的数值小于类型小的最大取值范围。
注意:在编程中要尽量避免由于强转导致的非预期结果
代码示例:
五、运算符#知识点:
算术运算符
位运算符
赋值运算符
关系运算符
逻辑运算符
三目运算符
运算符优先级
(一)算术运算符
表达式类型的自动提升
当一个算术表达式中包含多种数据类型的值时,整个算术表达式的数据类型将发生自动提升。
Java 定义了如下提升规则:
1)所有的byte 类型、short 类型和char 类型将被提升到int 类型。
2)整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。
(二)位运算符