数据类型
强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
数据类型分为:基本类型,引用类型
基本类型 primitive type
一、数值
- 整数类型
- 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
- 浮点类型
- float占4字节
- double占8字节
- 字符类型:char占2字节
二、boolean值:占1位其值只有tue和fase两个。
引用类型 reference type
- 类
- 接口
- 数组
/**
* @author gcbeen
*/
public class Demo02 {
public static void main(String[] args) {
// 八大基本数据类型
// 整数
int num1 = 10; // 最常用
byte num2 = 20;
short num3 = 30;
long num4 = 40L; // Long类型要在数字后面加L
// 小数:浮点数
float num5 = 50.1F; // float类型要在数字后面加F
double num6 = 3.1415926534546246455;
// 字符类型
char name = 'A';
// 字符串,String不是关键字,类
String names = "gcbeen";
// 布尔值
boolean flag = true;
boolean flag2 = false;
}
}
- 什么是字节
- 位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数。
- 字节(Byte):是计算机中数据处理的基本单位,习惯上用大写B来表示,1B(Byte字节)=8bit(位)。
- 字符:是指计算机中使用的字母、数字、字和符号。一个字符占有2个字节。
- 1bit表示1位
- 1Byte表示一个字节1B=8b
- 1024B=1KB
- 1024KB=1M
- 1024M=1G
数据类型扩展
/**
* @author gcbeen
*
*/
public class Demo03 {
public static void main(String[] args) {
// 整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
int i=10;
int i2 = 010; // 八进制0
int i3 = 0x10; // 十六进制0x
System.out.println(i); // 10
System.out.println(i2); // 8
System.out.println(i3); // 16
System.out.println("-------------------------------------");
//************************************************
// 浮点数拓展 银行数字处理 使用 BigDecimal
// BigDecimal 数学工具类
// float 有限 离散 舍入误差 大约 接近但不等于
// 最好完全避免使用浮点数进行比较
float f = 0.1f; // 0.1
double d = 1.0/10; // 0.1
System.out.println(f==d); // false
float d1 = 2425444564215654564f;
float d2 = d1 + 1;
System.out.println(d1==d2); // true
System.out.println("-------------------------------------");
//************************************************
// 字符拓展
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); // 强制转换
System.out.println(c2);
System.out.println((int)c2); // 强制转换
// 所有字符的本质还是数字
// 编码 Unicode 2字节 0 - 65536个字符
// Excel 2的16次方 65536
char c3 = '\u0061';
System.out.println(c3); // a
// 转义字符
// \t 制表符
// \n 换行
// ......
System.out.println("hello\tworld!");
System.out.println("hello\nworld!");
System.out.println("-------------------------------------");
// 字符串
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb); // false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd); // true
// 布尔值扩展
boolean flag = true;
if(flag==true){} // 新手
if(flag){} // 老油条
// 代码要精简易读
}
}
5.类型转换
由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。
低 ------------------------------------------------> 高
byte -> short -> char -> int -> long -> float -> double
小数的优先级大于整数
运算中,不同类型的数据先转化为同一类型,然后进行运算。
/**
* @author gcbeen
*/
public class Demo04 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i; // 内存溢出
double b1 = i;
// 强制转换 (类型)变量名 高--低
// 自动转换 低--高
System.out.println(i);
System.out.println(b);
System.out.println(b1);
/*
注意点:
1.不能对布尔类型转换
2.不能将对象类型转换为不相干的类型
3.在把高容量转换到低容量时,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!
*/
System.out.println("++++++++++++++++++++++++++++++++++++");
System.out.println((int)123.7);
System.out.println((int)-45.89f);
System.out.println("=======================");
char a = 'a';
int c = a+1;
System.out.println(c); // 98
System.out.println((char)c); // b
}
}
- 常见问题
/**
* @author gcbeen
*
*/
public class Demo05 {
public static void main(String[] args) {
// 操作比较大时,注意溢出
// JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
System.out.println(money);
int years = 20;
int total = money*years; // -1474836480 计算时溢出
System.out.println(total);
long total2 = money*years;
System.out.println(total2); // 默认是int,转换之前已经存在问题了!!!
long total3 = money*(long)years;
System.out.println(total3); // 20000000000
}
}
标签:String,int,数据类型,System,println,字节,out
From: https://www.cnblogs.com/gcbeen/p/16660939.html