java数据类型和码表、转义字符


|
|
类型名称 |
字节空间 |
范围 |
|
整数型 |
byte |
1 |
-27到27-1 或者 -128到127 |
|
|
short |
2 |
-215到215-1 |
|
|
int |
4 |
-231到231-1 |
|
|
long |
8 |
-263到263-1 |
|
浮点型 |
float |
4 |
单精度,对小数部分的精度要求不高 |
|
|
double |
8 |
双精度,精确的小数部分并操作值很大时 |
|
字符 |
char |
2 |
0到65535 因为少一个符号位所以比int大两倍 |
|
布尔 |
boolean |
1 |
真true 假false |
float和double有个问题 在我们大多的小数而言转换位二进制是无限位的,缺少精度。在后面的api java会解决、
如果右边给出初始值而且是正数,那么默认是int数字类型 比如 long l=1651651655;这个时候是错的,范围是超出的,但是如果你不是默认数字类型,加上一个标记就可以了
long l=16165165155L;
浮点行默认是double类型
如果定义一个单精度的数据类型的变量初始值加上一个F: float=1.2F;
char 是有且只有一个字符
char a=''; //没有内容会报错
char a1=' '; //可以是空格
char a2='av'; //多于一个字符
char a3='好'; //正确
char a4='好看'; //错误
变量
java中变量分为全局变量和局部变量
局部变量: 方法内的变量
全部变量: static int i;作用域是整个类 而且会有默认初始值
浮点数的字面值是double类型
float f = 3.0;//错的。右面3.0默认是double类型,不能直接给float类型赋值,占用4字节放不开double
字面值后缀LFD
long a=999999999999L;//对的,右面的整数默认值是int类型,加了L扩大了数据范围
float b = 3.0F;//右面3.0字面值是double,加了F就变成了float
double d = 3D; //右面的3字面值是int,加了D变成了double
进制前缀
0b -2进制
0x -16进制 0x0011 0x7781
0 -8进制 027
\u -char类型,16进制 \u0011,默认值是\u0000
二进制:0b111 代表的是7
八进制:010 代表的是8
16进制:0xa代表的是10
测试的话可以用下面
package com.tedu.basic; //测试取值范围
public class Test1_Scope {
public static void main(String[] args) {
byte bmax = Byte.MAX_VALUE;
byte bmin = Byte.MIN_VALUE; //打印变量的值快捷键alt+/
System.out.println(bmax);//127
System.out.println(bmin);//-128 short smax = Short.MAX_VALUE;
short smin = Short.MIN_VALUE;
System.out.println(smax);//32767
System.out.println(smin);//-32768 //int Integer
int imax = Integer.MAX_VALUE;
int imin = Integer.MIN_VALUE;
System.out.println(imax);//2147483647
System.out.println(imin);//-2147483648 //long Long
long lmax = Long.MAX_VALUE;
long lmin = Long.MIN_VALUE;
System.out.println(lmax);//9223372036854775807
System.out.println(lmin);//9223372036854775808 //float Float
float fmax = Float.MAX_VALUE;
float fmin = Float.MIN_VALUE;
System.out.println(fmax);//3.4028235E38
System.out.println(fmin);//1.4E-45 //double Double
double dmax = Double.MAX_VALUE;
double dmin = Double.MIN_VALUE;
System.out.println(dmax);//1.7976931348623157E308
System.out.println(dmin);//4.9E-324 System.out.println(); char c = 'h';//"" 字符串 ''字符
char c2 = '0';
char c3 = '我';//char可以存一个汉字
char c4 = 200;
//字符类型,最终的输出结果就是一个字符
//能够把98换算成字符b,
//因为char类型底层会查ascii码表
//ascii码表里规定了0-127对应的字符,
//ascii码表里没有的数字都按?字符来处理
System.out.println(c4);//?
} }
进制转化
1.1 小到大/隐式转换

float和double是可以互相转换的,但是转换后的值会与原来的值不一样。
float f=1.212161656f;
double d=1.212161656d;
double s=f;//float转double
float a=(float)d;//double转float 强制转换
System.out.println(f);//1.2121617
System.out.println(d);//1.212161656
System.out.println(s);//1.21216166 float转double自己往后面补东西
System.out.println(a);//1.2121617 double转float 会切掉多的部分
long l = 800;
float f = l;//右侧的是long类型小类型,给左侧的float大类型可以直接赋值
short s='内' 字符是0-65535 short是-215到215-1`
char c=10;//默认进行类型检查,会把数字转成对相应的字符
byte b=128;//超出范围报错;
byte b=128-1;//不报错 如果等号的右边参与运算的全部都是常量,那么java在编译时期就会进行优化,优化的结果就是直接计算等式,最后结果在进行赋值
double s=10;char c=s; //转化的值可能是负数那么就不在char范围内就会报错 你虽然看到的是他赋值了10是整数,但是在编译的时候编译器认为s有可能是负数,所以就报错了。
byte b=(byte)128; 结果是-128 解释如下
任何数据在底层是二进制的补码形式存储的
int 128 在底层的存储是00000000 00000000 00000000 10000000 正数的补码就是原码
强制类型后 变成bype类型 10000000(补码) 这个时候第一位是1那么这个时候补码是负数
转变位反码:11111111
再转变位原码 10000000 相当于-0(代表的是当前数据类型范围的最小值)
详情请看我写的原码,反码,补码的解析
https://www.cnblogs.com/xuwangqi/p/11023132.html

1.2 大到小/显示转换
需要强制类型转换
int a = 10;//大
//右侧的a本来是int类型,被强转成了byte类型和左面保持了一致
byte b = (byte)a;
1.3 浮点数转成整数,小数直接舍弃
不管0.1还是0.9全都舍弃。
float f = 3.9f;
int a = (int)f;//float是大类型,需要强转
System.out.println(a);//3
1.4 整数转成浮点型
表示的可能不准确 就是科学计数法
编码--把文字转换位数字的过程 转换规则是--码表

无论那张码表都默认兼容 ISO8859-1 (西欧码表) 就是前256的字符都是占1个字节
GB2312(简体中文 2个字节 ) BIG5(繁体中文 2个字节) GBK(国标表 2个字节)
Unicode编码体系(u8(三个字节)、u16(两个字节)、u32等。
.java文件进行存储时,默认采用的时u8进行编码的,.class在内存时用的是u16进行编码
char c=‘中’
当上诉代码中的字符存储在.java文件中时默认按u8进行编码,对.java文件进行编译生成.class文件加载到内存中进行执行.此时这个代码中字符默认按u16进行编码。内存执行完成之后要把内存的字节转成字符输出到程序中,如果指定就按指定的来,如果没有指定编码就按默认系统平台码来进行编码,默认系统平台码(window中文版 gbk ,linux u8)
java数据类型和码表、转义字符的更多相关文章
- JAVA数据类型,变量,转换,常量,运算符
java数据类型: Java基本类型共有八种,基本类型可以分为三类: 1.字符类型char,用单引号赋值 2.布尔类型boolean 3.数值类型byte.short.int.long.float.d ...
- java数据类型定义与输出
JAVA数据类型分基本数据类型和引用数据类型. 一.基本数据类型 Java里面包含8个基本数据类型,分别是: boolean.byte.char.short.int.float.douboe.long ...
- Java数据类型之byte、char
Java 有8中基本数据类型,分别是byte.int.long.char.float.double.boolean. 1.byte.char的简单介绍 有时候总是搞不清byte.char,所以就现在好 ...
- Java基础-Java数据类型
Java基础-Java数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...
- Java 数据类型、变量
Java 数据类型 在 Java 中,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间. 整数类型 (byte.short.int.long) 1.Java 各整数类型 ...
- 2、数据类型和运算符——Java数据类型
一.强类型语言和弱类型语言: 1.1 强类型语言 强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java..net .Pyt ...
- 回顾java基础—Java数据类型
1 java数据类型.8种基本类型,3种引用类型 基本类型(也称:原始类型):byte.short.int.long.char.float.double.boolean 引用类型:类,接口,数组 2 ...
- 多态、GC、Java数据类型
多态 一.java中实现多态的机制是什么? 靠的是: 父类定义的引用变量可以指向子类的实例对象,或者接口定义的引用变量可以指向具体实现类的实例对象 而程序调用的方法,在运行期才动态绑定, 它就是引用变 ...
- java数据类型图:
java数据类型图: ┏数值型━┳━整数型:byte short int long ┏基本数据类型━━┫ ...
随机推荐
- 在全程Linux環境部署IBM Lotus Domino/Notes 8.5
架設藍色巨人的協同合作訊息平台 在全程Linux環境部署IBM Lotus Domino/Notes 8.5 珊迪小姐 坊間幾乎所有探討IBM Domino/Notes的中文書籍,皆是以部署在Micr ...
- 开源的轻量级JSON存储Kinto介绍
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/12/introducing-kinto Kinto是个提供了同步与分片功能的 ...
- 使用openstack的虚拟机模版注意事项
openstack虚拟机模版(flavor)是一个非常奇怪的设计.讲讲我測试时遇到的问题,尽管说在project应用中虚拟机模版在開始时就定制好.后期可能做改动,可是改动时一定要注意,有以下几种情况: ...
- Solr基础教程之solrconfig.xml(三)
前面介绍过schema.xml的一些配置信息,本章介绍solrconfig.xml的配置,以及怎样安装smartcn分词器和IK分词器,并介绍主要的查询语法. 1. solr配置solrconfig. ...
- Xamarin nuget package update 错误
update xamarin.Forms包时出现错误: 'The specified path, file name, or both are too long. The fully qualifie ...
- 6.6 random--伪随机数的生成
本模块提供了生成要求安全度不高的随机数.假设须要更高安全的随机数产生.须要使用os.urandom()或者SystmeRandom模块. random.seed(a=None, version=2) ...
- Codeforces Round #311 (Div. 2)A Ilya and Diplomas
[比赛链接]click here~~ [题目大意] n个人,获取一到三等文凭,每门文凭有大小范围.求最后文凭各颁发多少 [解题思路]直接枚举了, 看完题,赶紧写了一发代码,发现竟然错过注冊时间.系统提 ...
- bzoj2125 最短路——仙人掌两点间距离
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2125 仙人掌!模仿 lyd 的代码写的,也算是努力理解了: 主要分成 lca 在环上和不在环 ...
- PL/SQL程序控制结构及在PL/SQL中更改数据和管理事务
1.条件控制 A. IF条件分支语法: if (条件1) then 语句; elsif (条件2) then 语句; elsif (条件3) then 语句; else 语句; end if; B . ...
- Android开发之Thread类分析 (转载)
转自:http://blog.csdn.net/llping2011/article/details/9706599 在我们Linux系统中创建线程函数为:pthread_create(),在Andr ...