数据类型和类型转换
一、一个程序执行的全过程
1.写*.java
2.编译,把*.java编程*.class
3.类加载(把class文件加载到虚拟机中)
4.执行程序
-
编译作用
1.编译检查语法
2.给虚拟机需要的class
-
反编译
把.class编程.java就是反编译
二、注释
注释就是对代码的解释
// 单行注释,只作用于1行--- 程序员最多
/* 多行注释,作用很多行 */ ---程序员较少
/** 文档注释,也是多行注释,只是文档注释可以生成文档! */--写源码
三、关键字和保留字
-
关键字
系统赋予特定含义的单词叫关键字
public 公开的 class 类
关键字特点全小写,在editplus中所有蓝色的字体都是关键字
-
保留字
系统还没有赋予这个单词特定含义,但是已经占有!
goto 转到 const 常数
四、标识符
理解:自己命名的部分叫标识符
标识符的规范:
1.标识符是由字母,数字,下划线,美元符号组成
2.数字不能开头
3.关键字和保留字不能作为标识符
4.中文和¥一般情况下可以作为标识符,但是开发禁用!
开发规范:类 -- 每个单词的首字母大写
五、简单数据类型的使用
- 字面值
今年我18岁--- 18表示数据,就是字面值
我身高1.75m----1.75表示数据,就是字面值
她说:“明天有雨”;----“明天有雨”表示数据,就是字面值
- 基本数据类型
18 ---- 整数字面值 int表示整数
1.75 ---- 小数字面值 double表示小数
“明天有雨” ---- 字符串字面值 String表示字符串
-
局部变量(必须在main方法体中去写)
一个变量只能存储一个数据(字面值) 语法:数据类型 变量名 = 字面值; // 把18这个字面值赋值 给 a,a是整数类型 int a = 18; // 把20赋值给变量a,把之前的18给覆盖了 a = 20; double b=1.78; b=20; String s="明天有雨"; s="今晚月色很美";
public class Demo01{ public static void main(String[] args){ // 18 ---- 整数字面值 int表示整数 // age只是变量的名字 18变量的数据 int age = 18; System.out.println(age);//18 age=20; System.out.println(age);//20 //1.75 ---- 小数字面值 double表示小数 double height=1.75; System.out.println(height); //“明天有雨” ---- 字符串字面值 String表示字符串 String s="明天有雨"; System.out.println(s); } }
-
练习
我叫“张张张”,我今年22岁了,我身高1.75m
public class Demo02{ public static void main(String[] args){ // 我叫“张张张”,我今年22岁了,我身高1.75m String name = "张张张"; int age = 22; double height = 1.75; System.out.println("名字:-----"+name); System.out.println("年龄:-----"+age); System.out.println("身高:-----"+height); } }
名字:-----张张张 年龄:-----22 身高:-----1.75
-
六、8种基本数据类型概述
整数类型 : byte short int long
小数类型(浮点类型):float double
逻辑类型: boolean
字符类型:char
-
整数类型
* 字节是单位,跟米是一样的! 8bit = 1byte 1024byte =1kb 1024kb=1m 1024m=1g 1024g=1t ... 同一种数据类型,占用字节数越大,取值范围越大! 取值范围 占用字节数 byte -128 到 127 1 short 正负3万多 2 int 正负21亿左右 4 long 最大范围 8
-
小数(浮点数)
浮点数 占用字节数 精确度
float 4 单精度
double 8 双精度
- boolean类型
对,错, 正确,错误,成立,不成立。。。基本逻辑,boolean表示基本逻辑
boolean 占用1字节
字面值只有两个
true(对,正确,成立。。。)
false(错,错误,不成立。。。)
true和false是关键字,因为系统赋予特定的含义,并且全小写!
-
char
char 取值范围0到65535 占用2个字节 char更多表示单个的字符,就是字符串中的一个! “abc”--->'a'
七、数据类型详解(重点)
- 变量的四种写法
public class Demo01{
public static void main(String[] args){
//变量4种方式
//第一种:声明变量直接赋值
int a=10;
//第二种:先声明,后赋值
//注意: b没有给初始值,直接输出,就会报错!
int b;
b=10;
System.out.println(b);
//第三种:一次写多个变量并且给值
int m=10,n=20;
System.out.println(m);
System.out.println(n);
//第四种:先声明多个变量,然后再逐个赋值
int x,y;
x=100; y=200;
System.out.println(x);
System.out.println(y);
}
}
- 整数类型
public class Demo02{
public static void main(String[] args){
//整数那些? byte short int long
byte a=20;
System.out.println("a:"+a);
short b=300;
System.out.println("b:"+b);
//int是默认类型
// 所有的整数字面值默认都是int类型,那么如果超过int范围
// 那么就是需要再整数字面值后面加上L/l ,变成把整数字面值直接放入
// long容器
long lg=220000000000000L;
System.out.println("lg:"+lg);
}
}
- 小数类型
public class Demo02{
public static void main(String[] args){
//double是所有小数字面值默认的类型!
//3.14默认double类型,会自动补小数位,小数位太多,float容不下,
//自然就出现double转换float可能有损失!
//解决:3.14直接放入flaot容器,加F/f
float f=3.14f;
System.out.println(f);
float f2=10;
System.out.println(f2);
//单精度和双精度
double m1=1.23456789123456789;
float m2=1.23456789123456789f;
System.out.println(m1);
System.out.println(m2);
}
}
- boolean类型
public class Demo03{
public static void main(String[] args){
//boolean类型
//true 真 正确 。。。
//false 假 错误。。。
boolean flag = true;
flag = false;
System.out.println(flag);
}
}
- char类型 字符类型
public class Demo04{
public static void main(String[] args){
//1.表示字符
//单引号,单个
// 如果是英文,一个字母,如果是中文一个汉字,如果是符号,一个符号
char a='*';
System.out.println(a);
//2.字符串
//双引号,多个
String b="玫瑰花的葬礼";
System.out.println(b);
System.out.println("----------------------------------");
//char 表示数字 0到65535
// 如果表示的十进制数字通过ASCII码对照表能对应一个图形,就会输出这个图形
//如果表示的十进制数字不能对应图形,就输出问好!除非63真的对应?
char c=8888; // a
System.out.println(c);
}
}
总结:
1.必须掌握四种变量的写法
2.必须掌握8种基本数据类型的
byte short int long float double boolean char
1 2 4 8 4 8 1 2
String是引用数据类型不是基本数据类型,“S” 是大写
3.精简掌握 整数用int 小数double 字符串用String
八、类型转换问题(重点)
能够参与类型转换的数据类型只有7种
按照容量范围的顺序排序? 从小到大排序
byte -> short(char)-> int -> long -> float -> double
- 自动类型转换
//小容量转换大容量,不需要任何修饰不会报错!
//整数转换小数,自动补.0
public class Demo01{
public static void main(String[] args){
//自动类型转换,小转大
byte a=10;
//把a赋值给b
//a是byte类型,变成int类型
double b=a;
System.out.println(b);
}
}
- 强制类型转换
public class Demo01{
public static void main(String[] args){
//强制类型转换
//大容量转换小容量,强制要求加 强制类型转换符
int m=100;
byte n=(byte)m;
System.out.println(n);
//强制类型转换2个问题
//1.溢出,是严重错误,避免发生
int m1=100000;
short m2=(short)m1;
System.out.println(m2);
//2.精度丢失
double n1=3.9;
int n2=(int)n1;
System.out.println(n2);
// 关于强制类型转换符
//强制类型转换符应该小于等于要转换的类型!!!
int mm1=100;
short mm2=(byte)mm1;
System.out.println(mm2);
}
}
- 其他类型转换
- short和char类型转换问题
public class Demo02{
public static void main(String[] args){
//char转换short
char a=50000;
short b=(short)a;
System.out.println(b);
//short转换char类型
short m=-500;
char n=(char)m;
System.out.println(n);
//------------------可以转换的是0到3万,共同区间
short s1=97;
char s2=(char)s1;
System.out.println(s2);
char m1=500;
short m2=(short)m1;
System.out.println(m2);
/*
总结:1. char和short转换,必须加强制类型转换符
2. 在公共区间内0到3万多转换,其他转换都溢出
*/
}
}
- byte short char只要参与运算,会自动提示为int类型
public class Demo03{
public static void main(String[] args){
//short char byte 参与运算自动提升为int
byte a=10;
short b=20;
short c=(short)(a+b);
System.out.println(c);
char c1=96;
c1=(char)(c1+1);
System.out.println(c1);
}
}
- 两个不同类型运算的结果是大的类型
public class Demo04{
public static void main(String[] args){
//两个不同类型运算的结果是大的类型
int a=10;
double b=20.0;
double c=a+b;
System.out.println(c);
byte a1=10;
short a2=20;
short a3=(short)(a1+a2);
System.out.println(a3);
}
}
学习方法:
如何评估自己一天内容是否完全掌握
能独立把每天内容,用代码写出来