类型名称

字节空间

范围

整数型

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数据类型和码表、转义字符的更多相关文章

  1. JAVA数据类型,变量,转换,常量,运算符

    java数据类型: Java基本类型共有八种,基本类型可以分为三类: 1.字符类型char,用单引号赋值 2.布尔类型boolean 3.数值类型byte.short.int.long.float.d ...

  2. java数据类型定义与输出

    JAVA数据类型分基本数据类型和引用数据类型. 一.基本数据类型 Java里面包含8个基本数据类型,分别是: boolean.byte.char.short.int.float.douboe.long ...

  3. Java数据类型之byte、char

    Java 有8中基本数据类型,分别是byte.int.long.char.float.double.boolean. 1.byte.char的简单介绍 有时候总是搞不清byte.char,所以就现在好 ...

  4. Java基础-Java数据类型

    Java基础-Java数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据类型的作用 数据类型就是一组值,以及这一组值上的操作,数据类型可以决定数据的存储方式,取值范围 ...

  5. Java 数据类型、变量

    Java 数据类型   在 Java 中,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间. 整数类型 (byte.short.int.long) 1.Java 各整数类型 ...

  6. 2、数据类型和运算符——Java数据类型

    一.强类型语言和弱类型语言: 1.1 强类型语言 强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java..net .Pyt ...

  7. 回顾java基础—Java数据类型

    1  java数据类型.8种基本类型,3种引用类型 基本类型(也称:原始类型):byte.short.int.long.char.float.double.boolean 引用类型:类,接口,数组 2 ...

  8. 多态、GC、Java数据类型

    多态 一.java中实现多态的机制是什么? 靠的是: 父类定义的引用变量可以指向子类的实例对象,或者接口定义的引用变量可以指向具体实现类的实例对象 而程序调用的方法,在运行期才动态绑定, 它就是引用变 ...

  9. java数据类型图:

    java数据类型图:                                 ┏数值型━┳━整数型:byte short int long               ┏基本数据类型━━┫   ...

随机推荐

  1. Wireshark 抓包遇到 you don’t have permission to capture on that device mac 错误的解决方案

    Wireshark 抓包遇到 you don’t have permission to capture on that device mac 错误的解决方案 上次有篇博客讲了如何利用wireshark ...

  2. IPV6相关RFC文档

    1. 通用 IPv6的通用RFC和Internet草案 RFC# 类 标题 1752 标准记录 对IP下一代协议的建议 1924 资料 IPv6地址的压缩表示法 2851 标准记录 Internet网 ...

  3. JavaScript Patterns 2.4 For-in loop

    Principle Enumeration should be used to iterate over nonarray objects. It's important to use the met ...

  4. YTU 2723: 默认参数--求圆的面积

    2723: 默认参数--求圆的面积 时间限制: 1 Sec  内存限制: 128 MB 提交: 206  解决: 150 题目描述 根据半径r求圆的面积, 如果不指定小数位数,输出结果默认保留两位小数 ...

  5. touch事件的分发机制

    作者:谢昆 一段伪代码反应整个touch事件的分发 public boolean dispatchTouchEvent(MotionEvent event) { boolean consume = f ...

  6. 在C#中实现listbox的项上下移动(winform) 标准

      在C#中实现listbox的项上下移动(winform) 收藏人:梅毛子360   2013-10-02 | 阅:1  转:2  |  分享    |    来源              usi ...

  7. .NET下WebBrowser的一个BUG以及其替代品——geckofx

    今天研究一个小问题,在C#的WebBrowser下打开奇艺网的视频,经常整个FLASH就偏了,进度条控制条什么的都没有. 要全屏一下然后还原才能解决这个问题. 如下,图1为webbrowser打开,图 ...

  8. [Codeforces Round495B] Sonya and Exhibition

    [题目链接] https://codeforces.com/contest/1004/problem/B [算法] 不难发现 , 最优解一定是01010101.... 时间复杂度 : O(N) [代码 ...

  9. myeclipse配背景色

    1:使jsp,html等页面为纯黑色. 2:发现JS的背景颜色还是默认的.而且还是块状的.将它设置背景为黑色的. *效果图: 参考:http://blog.csdn.net/ltqwby/articl ...

  10. Knights of the Round Table(Tarjan+奇圈)

    http://poj.org/problem?id=2942 题意:n个武士,某些武士之间相互仇视,如果在一起容易发生争斗事件.所以他们只有满足一定的条件才能参加圆桌会议:(1)相互仇视的两个武士不能 ...