编码
unicode解决了语言不通的问题. 但是.unicode又有一个新问题. 由于unicode是万国码. 把所有国家的文字都编进去了. 这就导致一个unicode占用的空间会很大. 原来一个英文字母a就8bit. 换成unicode. 好家伙变成了32bit. 4倍的存储. 网路传输也一样. 特别消耗带宽流量. 以前啊. 我们的硬盘也好, 网络也好. 都是很差的. 所以没办法使用unicode. 但是我还想用,怎么办呢. 这时产生了UTF. 可变长度的unicode. 全程Unicode Transformation Format. 它是unicode的一种实现方式. 对于不同的文字信息. UTF的长度也是不一样的. 我们使用频率最高的编码是UTF-8. 英文: 8bit, 1byte. 欧洲文字: 16bit, 2byte. 中文: 24bit, 3byte. 这样既解决了语言不通的问题. 也解决了传输的问题.
java的基础数据类型
一些基本数据类型. int, String, boolean, double. 其实,java不仅仅只有这4种数据类型. 今天我们主要就是学习java的基本数据类型.
java的数据类型分为两大部分:
基础数据类型
整数
byte 字节. 1个字节, 范围: -128~127
short 短整数. 2个字节, 范围: -32768~32767
int 整数. 4个字节, 范围
long 长整数. 8个字节
浮点数
float 单精度浮点数 精度低
double 双精度浮点数 精度高
字符
char 字符类型 表示单个字符. 2个字节
布尔
boolean 布尔类型 两个取值(true, false)
引用数据类型
除了基本数据类型以外的其他所有数据都是引用数据类型. 最典型的就是字符串
在java中所有被双引号引起来的内容都是字符串
String name = “周杰伦”;
System.out.println(name); // 打印周杰伦
字符串可以执行加法运算. 表示字符串拼接.
String a = “你好”;
String b = “赛利亚”;
System.out.println(a+b); //你好赛利亚
System.out.println(1+a); //1你好
当出现非字符串和字符串进行相加的时候. 首先把非字符串自动转化成字符串然后再执行拼接操作
好玩儿的一个程序.
System.out.println(“1” + 1); # 11
特殊的东西, 转义字符: 具有特定含义的字符串
\n : 换行
\t : 制表符
\\ : \
\’ : ‘
\”: “
public class Datastruct {
public static void main(String[] args) {
System.out.println("1" + 1);
System.out.println("你好啊,我叫\n元贞");
System.out.println("玛丽说:\"他喜欢你\" ");
System.out.println("hello\t world ");
}
}
11
你好啊,我叫
元贞
玛丽说:"他喜欢你"
hello world
基础数据类型之间的转化
不同的数据类型可能是需要进行转化的. 比如. 今天白天花了1000块. 使用short可以装的下. 但是晚上突然多花费了100000. short一下就装不下了. 怎么办呢. 这就需要数据类型之间的转化.
首先, 这里的转化跟多的发生在数字身上. char和boolean一般不参与转化. 谁也不会闲的把一个文字变成数字来干活.
我们把数据类型进行排序, 按照能表示的数据量的范围进行排序.
byte -> short -> int -> long -> float -> double
为什么long排在float前面. 因为. 整数是有数据量的范围的. 而小数是没有的. 很简单的例子, 0~1有多少个小数? 无数个.
从小数据类型向大数据类型转化是直接转化的.
byte a = 10;
int b = a;
System.out.println(b); // 10
long c = b;
System.out.println(c); // 10
我们可以看到. 非常方便. 直接用就可以了. 但是如果是大的数据类型向小数据类型转化的话. 就需要强制类型转换(俗称强转).
int a = 100;
short b = (short) a;
System.out.println(b); // 100
强制类型转换的语法:
(转换之后的数据类型) 变量
小结: 小 -> 大 : 自动转换 大 -> 小 : 强制类型转换