一、
1,基本类型 八种
--整数:byte short int long
--小数:float double
--布尔:boolean
--字符:char
2,基本类型对应的工具类:
基本类型: byte ;short;int;long; float;double;char; boolean
工具类:Byte;Short;Integer;Long Float;Double; Character; Boolean
//3,通过点.来调用工具类的功能
//4,打印变量时,千万不要用双引号
//1,整数类型的取值范围 byte short int long
例如:创建变量,记录最大值:变量类型 变量名 变量值
byte max = Byte.MAX_VALUE ;
System.out.println("max");
float--Float double--Double
区别:float是单精度,对小数位运算不精确
区别:double是单精度,对小数位运算非常精。
char--字符型 --一个字符
char c = 'a' ;//一个字母
char c2 = '1' ;//一个数字
char c3 = '中' ;//char类型能不能存一个中文汉字? -- 可以
char c4 = 126 ;//可以直接存数 System.out.println(c); System.out.println(c2);
System.out.println(c3);
char类型是字符型,允许你直接存入一个数字本身.但是,使用时还是要用字符的.
使用时,底层会去查询ascii码表,数字对应的字符是啥,然后用字符本身.
ascii码表里,规定了0~127数字对应的字符,char类型的取值范围是0~65535.
数值转换图:
练习:圆形面积
package cn.tedu.basic;
import java.util.Scanner;
//这个类用来测试 圆形面积
//总结
//1,修改变量的值,既然被定义成了变量,他的值就可以一直被修改
//2,变量的值为了写的更加灵活,可以动态接收键盘输入的值
//3,拿着变量的值,带入公式,运算结果,并交给area/zhouchang去保存
//4,动态拼接字符串,用+完成
public class Test3_Area {
public static void main(String[] args) {
double r = 5.5 ;//定义变量,记录圆的半径
//动态的接收键盘输入的值
r = new Scanner(System.in).nextDouble() ;//修改变量的值
double area = 3.14 r r ;
//圆形面积:3.14 r r
System.out.println("圆的面积是:"+area);//打印面积
//TODO 圆的周长
double zhouchang = 2*3.14*r ;
}
}
--5,练习:变量交换
package cn.tedu.basic;
import java.util.Scanner;
//这个类用来测试 变量值交换
public class Test4_Exchange {
public static void main(String[] args) {
//1,创建变量a和b
int a = new Scanner(System.in).nextInt() ;
int b = new Scanner(System.in).nextInt() ;
System.out.println("交换前:a=1,b=2");
//2,交换值
int c = a ;//把a的值交给c保存
a = b ;//把b的值交给a保存
b = c ; //把c的值交给b保存
TODO 3,打印
}
}
--6,引用类型--数组/OOP ...
二,基本类型的字面值(5条)
package cn.tedu.basic;
这个类用来测试 字面值
public class Test5 {
public static void main(String[] args) {
1,java里整数有4种类型,那么,我们写的整数到底字面值是什么类型呢?--int
int a = 1000 ;
2,在取值范围内,可以直接赋值
byte m = 123 ;
byte n = 128 ;//报错,右侧是int类型,左侧的byte类型根本就存不下
//char o = 65536 ;//报错,右侧是int类型,左侧的char类型根本就存不下
3,java里小数有2种类型,那么,我们写的小数到底字面值是什么类型呢?--double
double x = 9.9 ;
4,字面值的后缀lfd , l-long f-float d-double
报错,因为有右侧字面值是int类型,但是,超出了int范围!!--加后缀L变成long类型
long b = 10000000000L;
报错,右侧是double类型8字节,左侧是float类型4字节,存不下!!--加后缀f变成float类型
float y = 9.9f ;
double z = 3d;
//右侧就从字面值int类型转成了double类型
}
}
三,基本类型的类型转换
--1,从小到大:拿着小类型给大类型赋值--隐式转换
--2,从大到小:拿着大类型给小类型赋值--显式转换
--3,测试
package cn.tedu.basic;
这个类用来测试 转换
public class Test6 {
public static void main(String[] args) {
从小到大(隐式转换) byte小类型 -- long大类型
byte a = 10 ;
拿着右侧的小类型a,给左侧的大类型b去赋值 --可以直接赋值!!
long b = a ;
从大到小(显式转换) double-int
double m = 10;
拿着右侧的大类型m,给左侧的小类型n去赋值--不可以!!需要强转
int n = (int) m ;
练习:小转大long-float
long x = 10 ;
float y = x ;//隐式转换
大转小:double-float
double o = 9 ;
float p = (float)o ;//显示转换
}
}
四,运算规则(5条)
package cn.tedu.basic;
//这个类用来测试 运算规则
public class Test7 {
public static void main(String[] args) {
1,计算结果的数据类型,与最大类型一致
System.out.println(3/2); //1 , int/int->int
System.out.println(3d/2); //1.5 , double/int -> double
System.out.println(3.14*10);//31.4 , double*int -> double
2,byte,short,char三种比int小的整数,运算时会先自动转换成int
byte a = 1;
byte b = 2;
右侧拿着两个byte类型的值,做运算时,会变成大类型int类型--需要强转
byte c = (byte) (a*b);
3,整数运算溢出 -- 因为在运算时已经超出了int的范围!!--需要加后缀L扩大范围
光速运行一年的运行是多少米?--3亿m/s
System.out.println( 300000000L * 60 * 60 * 24 * 365 );
4,浮点数的特殊值--由于小数运算中,出现了不应该出现的现象:分子或者分母为0了!!
System.out.println( 3.14/0 );//Infinity
System.out.println( 0/0.0 );//NaN
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。