常量、数据类型、进制转换
一、数据类型
(一)掌握常量概念
1. 定义
常量表示不能改变的数值
2.常量的分类
1.整数常量:所有整数。
2.小数常量:所有小数。
3.布尔(boolean)型常量:只有两个数值true false。
4.字符常量:将一个数字,字母或者符号用单引号( ' ' )标识。
5.字符串常量:将一个或者多个字符用双引号(“ ”)标识。
6.null常量:只有一个数值就是:null。
(二)掌握变量概念
1.定义
变量表示可能改变的数值
2.Java中变量的概念
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
生活中的例子:超市每个货架摆放同一类型的物品 eg:水果区域有自己的名字--水果区 数据类型--只能放水果,蔬菜不可以 值--只要是水果就可以摆放
3.变量的声明形式
声明 数据类型 变量名;
赋值 变量名 = 值;
声明并赋值
数据类型 变量名 = 【值】;
数据类型 变量名1 = 【值】,变量名2, 变量名3 = 值;
例如:int i = 100;
float f ;
f=12.3f;
double d1=0.12,d2,d3 = 0.123;
4.变量使用步骤
第一步:声明变量,即“根据数据类型在内存申请空间”
数据类型 变量名; int money;
第二步:赋值,即“将数据存储至对应的内存空间”
变量名=值; money=1000;
第一步和第二步可以合并
数据类型 变量名=值; int money=1000;
第三步:使用变量,即“取出数据使用 ”
public class MyVariable { public static void main(String[] args) { //1.声明变量:数据类型 变量名 // int sal; //2.给变量名赋值:变量名=值 // sal=10000; //1,2合并简化 int sal=20000; //3.取出数据输出 System.out.println(sal); } }
5.idea的设置
- 主题 Appearance-Intelj 白底黑字
- editor-font-size 行距
- editor-general-Code Completion -Match case去掉勾
6.变量的分类
临时变量(局部变量):方法内部声明的变量(包括参数)
成员变量(全局变量):在方法外,类体内声明的变量
7.变量使用的注意事项
1.变量的作用范围(一对{ }之间有效)
2.Java中的每一个变量使用前必须要先申请(声明),然后必须进行赋值,才能够使用,否则报错。
3.该区域的数据可以在同一类型范围内不断变化
4.在一个方法中变量名不能重复声明
注意:用来存放同一类型的常量
(三)熟练掌握Java的数据类型分类
Java语言是强类型语言,任何一个变量或常量在Java中必须有确定的数据类型;
Java语言的数据类型有两种,即基本数据类型和引用类型
(四)熟练掌握Java中各类基本数据类型的数据表示范围及初始值
1.每种数据类型在内存中占有不同的长度
计算机存储设备的最小信息单元叫“位(bit)”,又称之为“比特位”;
连续的8个位成为1个“字节(byte)”;
操作系统分配内存最少1个字节,即8 个位,而不是1个位;
长度越长,所表示的范围就越大;
类型 |
长度(位) |
长度(字节) |
表示范围 |
byte |
8位 |
1字节 |
-128~127(-27~27-1) |
short |
16位 |
2字节 |
-32768~32767(-215~215-1) |
int |
32位 |
4字节 |
-2147483648~2147483648(-231~231-1) |
long |
64位 |
8字节 |
-263~263-1(-263~263-1) |
float |
32位 |
4字节 |
-3.403E38~3.403E38 |
double |
64位 |
8字节 |
-1.798E308~1.798E308 |
char |
16位 |
2字节 |
表示一个字符,如(‘a’,‘A’,‘0’,‘中') |
boolean |
8位 |
1字节 |
只有两个值true与false |
byte short int long float double
char
boolean
2.每种具体类型都有不同的默认值
当没有为一个属性变量赋值时,会根据类型为其赋值为默认值;
注意:char的默认值是\u0000,等同于一个空字符;boolean的默认值是false
数字 默认类型是整数
小数 默认类型是double
(五)熟练掌握JAVA基本数据类型的显式与隐式数据类型转换
1.隐式转换
小转大 自动转
从表示范围小的类型转换为表示范围大的类型,可以直接转换,称为隐式转换
byte b=1;
int i=-2;
// 表示范围小的可以直接转换为表示范围大的类型
i=b;
b=i; //报错
2.显式转换
大转小,手动转
从表示范围大的类型转换为表示范围小的类型,需要强制转换,称为显式转换
公式:小类型 变量名=(小类型)大类型变量名
byte b=1;
int i=-2;
int c;
// 表示范围大的不可以直接转换为转换范围小的类型,需要强制转换,称为显式转换
b=(byte)i;
c=(char)i;
int i=2 System.out.println("i = " + i); //大转小:小类型 变量名=(小类型)大类型变量 byte b=(byte)i; //输出 System.out.println("b = " + b);
3.类型转换的前提
虽然类型之间可以进行强制的隐式转换,但是也需要有一定的前提;
数值类型和boolean类型之间就不能转换;强制也不可以;
byte b=1;
boolean b2=false;
// "风马牛不相及"的boolean和数值类型,强制也不能转换;
b2=b; (编译错误)
b2=(boolean)b; (编译错误)
4.可以使用+、-、*、/ 对基本数据类型的数值进行运算
注意:运算后的数据类型可能会发生变化或者报错;
1) int x=3;
x=3+5; //ok
2) int x=3;
byte b=5;
x=x+b;//ok
3)byte b=3;
b=b+4; //error
4) byte b=4;
b=3+7; //ok
5.课堂练习
一个比较特殊的转换;
System.out.println('a')与System.out.println('a'+1) 的区别;
不报错 a 98 自动类型提升为int |
ASCII(American Standard Code for Information Interchange,美国信息互换标准代码,ASCⅡ)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
ASCII第一次以规范标准的型态发表是在1967年,最后一次更新则是在1986年,至今为止共定义了128个字符,其中33个字符无法显示(这是以现今操作系统为依归,但在DOS模式下可显示出一些诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符,控制字符的用途主要是用来操控已经处理过的文字,在33个字符之外的是95个可显示的字符,包含用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。
6.ASCII控制字符
二进制 |
十进制 |
十六进制 |
缩写 |
可以显示的表示法 |
名称/意义 |
0000 0000 |
0 |
00 |
NUL |
␀ |
空字符(Null) |
0000 0001 |
1 |
01 |
SOH |
␁ |
标题开始 |
0000 0010 |
2 |
02 |
STX |
␂ |
本文开始 |
0000 0011 |
3 |
03 |
ETX |
␃ |
本文结束 |
0000 0100 |
4 |
04 |
EOT |
␄ |
传输结束 |
0000 0101 |
5 |
05 |
ENQ |
␅ |
请求 |
0000 0110 |
6 |
06 |
ACK |
␆ |
确认回应 |
0000 0111 |
7 |
07 |
BEL |
␇ |
响铃 |
0000 1000 |
8 |
08 |
BS |
␈ |
退格 |
0000 1001 |
9 |
09 |
HT |
␉ |
水平定位符号 |
0000 1010 |
10 |
0A |
LF |
␊ |
换行键 |
0000 1011 |
11 |
0B |
VT |
␋ |
垂直定位符号 |
0000 1100 |
12 |
0C |
FF |
␌ |
换页键 |
0000 1101 |
13 |
0D |
CR |
␍ |
归位键 |
0000 1110 |
14 |
0E |
SO |
␎ |
取消变换(Shift out) |
0000 1111 |
15 |
0F |
SI |
␏ |
启用变换(Shift in) |
0001 0000 |
16 |
10 |
DLE |
␐ |
跳出数据通讯 |
0001 0001 |
17 |
11 |
DC1 |
␑ |
设备控制一(XON 启用软件速度控制) |
0001 0010 |
18 |
12 |
DC2 |
␒ |
设备控制二 |
0001 0011 |
19 |
13 |
DC3 |
␓ |
设备控制三(XOFF 停用软件速度控制) |
0001 0100 |
20 |
14 |
DC4 |
␔ |
设备控制四 |
0001 0101 |
21 |
15 |
NAK |
␕ |
确认失败回应 |
0001 0110 |
22 |
16 |
SYN |
␖ |
同步用暂停 |
0001 0111 |
23 |
17 |
ETB |
␗ |
区块传输结束 |
0001 1000 |
24 |
18 |
CAN |
␘ |
取消 |
0001 1001 |
25 |
19 |
EM |
␙ |
连接介质中断 |
0001 1010 |
26 |
1A |
SUB |
␚ |
替换 |
0001 1011 |
27 |
1B |
ESC |
␛ |
跳出 |
0001 1100 |
28 |
1C |
FS |
␜ |
文件分割符 |
0001 1101 |
29 |
1D |
GS |
␝ |
组群分隔符 |
0001 1110 |
30 |
1E |
RS |
␞ |
记录分隔符 |
0001 1111 |
31 |
1F |
US |
␟ |
单元分隔符 |
0111 1111 |
127 |
7F |
DEL |
␡ |
删除 |
7.ASCII可显示字符
|
|
|
|
|
==========================================
GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换
1)基本集共收入汉字6763个和非汉字图形字符682个
2)于人名、古汉语等方面出现的罕用字,GB 2312不能处理
====================================
GBK
1)2W多汉字
2)有加了繁体
========================================
GB18030
1)支持中国国内少数民族(如藏、蒙古、傣、彝、朝鲜、维吾尔文等)的文字,不需要动用造字区。
======================
Unicode:国际组织编码,容纳世界上所有的文字和符号的字符编码
Unicode 是「字符集」
UTF-8 是「编码规则」
(1)包括UTF-32编码
每个字符用一个int来表示 abcd 需要占用4个int
特点:简单,太浪费空间
(2)UTF-16编码
特点:它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。
(3)UTF-8 编码
==================
ascii:把所有的字母的大小写,各种符号用二进制来表示,1bytes代表一个字符
Unicode:为了统一世界各国语言的不同,统一用2个bytes代表一个字符,特点:速度快,但浪费空间
utf8:为了改变Unicode的这种缺点,规定一个英文字符用一个字节表示,一个中文字符用三个字节表示,特点:节省空间,速度慢
gbk:是中文的字符编码,用2个字节代表一个字符
8.课堂案例
1. 输出Java课考试最高分:98.5
输出最高分学员姓名:张三
输出最高分学员性别:男
System.out.println("最高分姓名:张三"); |
2.使用变量存储以下MP3信息,并打印输出
品牌(brand):爱国者F928
重量(weight):12.4
电池类型(type):内置锂电池
价格(price):499
String brand="爱国者F928"; |
品牌:爱国者F928 重量:12.4 电池类型:内置锂电池 价格:499.0 |
10.数据类型转换总结
如果 byte、short和char数据数据类型的值相计算,计算结果就是int型
如果一个操作数最大范围的数据类型是long型,计算结果就是long型;
如果一个操作数最大范围的数据类型是float型,计算结果就是float型;
如果一个操作数最大范围的数据类型是double型,计算结果就是double型
(六)熟悉进制转换
1.定义
进制是一种记数方式:称进位记数法,可以用有限的数字符号代表所有的数值。
2.进制包括
十进制:人类天然选择了十进制,进位制中,十进制是使用最为普遍的一种。
0-9 ,满10进1.
二进制:它由两个数码0,1组成。
0,1 ,满2进1
八进制: 二进制数据的书写和阅读不方便,出现了八进制
0-7 ,满8进1. 用0开头表示。
十六进制:逢十六进一.
数字0~9 A-F组成(10~15) 用0x开头表示。
3.进制转换
进制之间是可以相互转换的
1.十进制位制转二进位制
2.十进制位制转八进位制
3.十进制转八进位制、十进制、十六进制
4.十六进制位制转十进制、二进制
5.八进制位制转二进位制
6.八进制位与十六进制位
7.小数之间的进制转换
(二)了解引用数据类型
在Java语言中,除了上节学习到的8种基本数据类型,其他类型都是引用类型: 类、接口、枚举、注解、数组
引用类型使用=赋值;
字符串可以用String类型来声明
String name="张三"; String s=""; String s=null; System.out.println("name = " + name);