标题java中的数据类型
感谢尚硅谷免费的视频
分类
基本数据类型
整型:byte、short、int、long
浮点型:float、double
字符型:char
布尔型:boolean
引用数据类型
使用class定义:比如String
使用interface定义:比如List
数组类型
整型
补充:计算机只识别二进制,也就是需要将整型数值转换成二进制进行存储
010101010
bit 位
byte 字节
1字节=8bit
1111 1111
0000 0000~1111 1111
0000 0000 0000 0000~ 1111 1111 1111 1111
0000 0000 0000 0000 0000 0000 0000 0000~1111 1111 1111 1111 1111 1111 1111 1111
一、分类
意义 所占空间 表示的数的范围
byte 字节整型 1个字节 -128~127 (-2^7-2^7-1)
short 短整型 2个字节 -2^15~2^15-1
int 整型 4个字节 -2^31~2^31-1
long 长整型 8个字节 -2^63~2^63-1
浮点型
一、分类
意义 所占空间
float 单精度浮点型 4个字节
double 双精度浮点型 8个字节
二、特点:
1、编译器默认的浮点型为double,可以标记为d或D
2、float类型的常量值可以标记为f或F
字符型
补充:
为了将字符存储到计算机中,引入一个字符编码集,将字符先通过字符编码集解析成对应的二进制,然后进行存储
常见的字符编码:
ASCII码:只能包含128个字符
unicode码:可以包含世界上所有的字符,但固定长度的编码表,所以有点浪费空间
utf-8:可以包含世界上所有的字符,可变长度的编码表
一个字母占1个字节
一个汉字占3个字节
一、分类
意义 所占空间 使用的字符编码
char 字符型 2个字节 unicode
二、特点
1、底层存储是以二进制形式(整数形式)
2、char类型的常量值可以是:
字符
整型
十六进制的码值
布尔型
意义 所占空间 表示的值
boolean 布尔 1个字节 true或false
特点:
一般用于表示比较关系的结果,使用在后面讲的if条件或循环条件中!
总结:
上述的八种基本类型的具体使用完全一样!
一、理解
变量是内存中的一块数据存储空间的表示
二、变量的三要素
数据类型
变量名
变量值
三、变量的使用步骤 ★
1、声明
数据类型 变量名;
2、赋值
变量名 = 值;
3、使用
System.out.println(变量名);
注意:
①前两步可以合二为一:
数据类型 变量名 = 值;
②同一个类型的多个变量定义还可以写成如下形式
数据类型 变量名,变量名,变量名;
示例:
int a;
int b;
int c;
等价于:
int a,b,c;
四、变量的使用特点
1、变量遵循内存的特点:容易丢失
2、变量必须先声明,赋值,最后再使用
3、在同一个作用范围内,变量不可以重名
4、变量的值可以更改
五、变量的三要素解析一:变量值
String的常量值,必须用双引号
int的常量值,不用任何引号
double的常量值,不用任何引号
char的常量值,必须用单引号
六、变量的三要素解析二:变量名
标识符:java中凡是可以自己起名的地方,都可以称为标识符,包含类或方法或变量等
标识符的命名规则:
只能包含数字、字母、下划线和$符号,不能以数字开头,不能是关键字或保留字!
示例:
a$b 、_c、A2、c_x、2w、w234、public×、int×、void×
标识符的命名规范:
最好见名知义
类名遵循Pascal命名法:MyArrayListDemo、Test1
变量名遵循驼峰命名法:myJavaScore1
数据类型分类:
基本数据类型(原始数据类型)
byte
short
int
long
float
double
char
boolean
引用数据类型(复杂数据类型)
使用class关键字定义的类,比如String
使用interface关键字定义的接口,比如List
数组
一、整型
所占空间 表示的数的范围
byte 1个字节 -128~127
short 2个字节 -2^15~2^15-1
int 4个字节 -2^31~2^31-1
long 8个字节 -2^63~2^63-1
特点:
1、编译器默认的整型为 int
2、byte和short 进行运算时,当做int类型处理
3、使用步骤完全一样
二、浮点型
所占空间
float 4个字节
double 8个字节
特点:
1、编译器默认的浮点型为 double
2、float类型的常量值需要标记f或F,double类型的常量值可以标记为d或D(不标记也没关系)
3、一个浮点数实际存储也是二进制,将一个浮点数拆分成 :符号位+指数位(阶码)+尾数位
4、可以选择BigDecimal 表示精度要求更高的数
三、字符型
所占空间 使用字符集
char 2个字节 unicode
特点:
1、char类型的实际存储也是二进制形式
2、char类型的表示形式
char c='a';
char c=100;
char c = '\u0003';
char c = '\\';
int i=100;
char c = i;//错误
四、布尔型
所占空间 表示的值
boolean 1个字节 true|false
特点:
1、布尔型一般用作if或循环条件中
2、关系表达式或逻辑表达式的结构就是布尔型
五、类型转换:
1.基本类型之间的转换
自动类型转换:从小变大
强制类型转换:从大变小
特点:
1、表达式有自动提升原则,结果类型取决于操作数最大的类型
10*1.5+'a'
2、强转符号只针对最近的表达式有效
2、String和基本类型之间的转换
①基本类型——>String
String s = 基本类型的变量或常量值+“”;
②String———>基本类型
XX x = XX.parseXX(字符串);
示例:
int i = Integer.parseInt(string);
double d = Double.parseDouble(string);
char c = string.charAt(0);
运算符
一、算术运算符
1.+ - * / %
2.++ --
特点:
① / :左右两边都是整型,结果取整
② % :a%b = a-(int)a/b*b
③++或--
情况一:可以作为独立的语句使用
示例:
i++;等价于 ++i;等价于 i=i+1;
情况二:作为表达式使用
示例:
1.int j=i++;
int j=++i;
2.System.out.println(i++);
System.out.println(++i);
3.if(i++>7){}
while(++i<9){}
注意:
++i :先自增,后赋值
i++ :先赋值,后自增
二、关系运算符
> >= < <= != ==
三、逻辑运算符
语法 特点
&& 条件1&&条件2 两个条件都成立,结果为true。如果条件1为false,条件2则不会判断,效率高
|| 条件1||条件2 只要有一个条件成立,结果为true。如果条件1为true,条件2则不会判断,效率高
! !条件 如果条件成立,结果为false。
& 条件1&条件2 两个条件都成立,结果为true。不管条件1是否为false,条件2都要判断,效率低
| 条件1|条件2 只要有一个条件成立,结果为true。不管条件1是否为false,条件2都要判断,效率低
四、赋值运算符
1.=
2.+= -= *= /= %=
特点:
1、运算顺序从右往左
2、左边要求必须是变量,右边要求是常量或表达式或变量
3、复合赋值运算符相对来说效率较高,并且里面自动进行了类型转换
int a =10;
a+=3.5;//不报错
等价于a=a+(int)3.5;
五、三元运算符
条件?表达式1 :表达式2
特点:
如果条件成立,结果为表达式1,如果不成立,结果为表达式2
进制转换
一、进制
常见的进制:
二进制:0-1,以0b或0B开头
八进制:0-7,以0开头
十进制:0-9
十六进制:0-9 A-F,以0X或0x开头
进制的转换:
其他进制——>十进制:
示例:100010011
规律:从最低位开始,将每个位上的数提取出来乘以2|8|16的幂次方,(幂值从0开始),最后累加
十进制———>其他进制:
示例:198
规律:不断除以2|8|16,直到商为0为止,每次的余数倒过来即为其他进制
其它进制——>二进制:
示例:0x3C
规律:将每一位上的数提取出来,拆分成3位或4位的二进制数,最后拼接在一起
二进制——>其他进制:
示例:0b111001001011——>07113
规律:从最低位开始,每三位或每四位转换成一个十进制数,如果不够,则前面用0补齐。最后拼接在一起
二、位运算符
特点:都是以二进制的补码形式进行运算的 ,符号位参与运算!
原码:将十进制数转换成二进制,最高位为符号位。1代表负数,0代表正数
反码:
正数的反码=原码
负数的反码=最高位不变,其他位取反
补码:
正数的补码=原码
负数的补码=反码+1
>> 右移:右移动指定位数,空缺位补最高位上的数
<< 左移 :向左移动指定位数,空缺位补0
>>> 无符号右移:向右移动指定位数,空缺位补0
& 与 :两个都为1,结果为1,否则为0
| 或 :有一个为1,结果为1,否则为0
^ 异或 :相等为0,不等为1
~ 取反 :都取反
【面试题】2如何最快的变成8?
答:2<<2
键盘输入语句(Scanner)
一、导包
位置:class的上面
import java.util.*;
二、创建对象
位置:一般main里面的第一句话
Scanner input = new Scanner(System.in);
三、调用方法
位置:要放在创建对象的下面
String name = input.next();
int age = input.nextInt();
double score = input.nextDouble();
boolean flag = input.nextBoolean();
char gender = input.next().charAt(0);
测试结果
System.out.print("请输入一个整数:");
Scanner s = new Scanner(System.in);
int i = s.nextInt();
System.out.println("键盘输入的整数位为:"+i);
从键盘输入今天日期