Java基本数据类型

基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型,因此面试题中也总少不了它们的身影,在这篇文章中我们将从面试中常考的几个方面来回顾一下与基本类型相关的知识。

基本类型共有八种,它们分别都有相对应的包装类。

基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。

1、未带有字符后缀标识的整数默认为int类型;未带有字符后缀标识的浮点数默认为double类型。

2、如果一个整数的值超出了int类型能够表示的范围,则必须增加后缀“L”(不区分大小写,建议用大写,因为小写的L与阿拉伯数字1很容易混淆),表示为long型。

3、带有“F”(不区分大小写)后缀的整数和浮点数都是float类型的;带有“D”(不区分大小写)后缀的整数和浮点数都是double类型的。

4、编译器会在编译期对byte、short、int、long、float、double、char型变量的值进行检查,如果超出了它们的取值范围就会报错。

5、int型值可以赋给所有数值类型的变量;long型值可以赋给long、float、double类型的变量;float型值可以赋给float、double类型的变量;double型值只能赋给double类型变量

表达式和运算符

(一) 运算符

对各种类型的数据进行加工的过程成为运算,表示各种不同运算的符号称为运算符,参与运算的数据称为操作数,按操作数的数目来分,可有:

◇ 一元运算符:++,--,+,-

◇ 二元运算符:+,-,>

◇ 三元运算符:?:

基本的运算符按功能划分,有下面几类: 1 算术运算符: +,―,*,/,%,++,――。    例如:     3+2;     a-b;     i++;     --i;

2 关系运算符: >,<,>=,<=,==,!=。     例如:     count>3;     I==0;      n!=-1;

3 布尔逻辑运算符: !,&&,|| 。    例如:    flag=true;     !(flag);    flag&&false;

4 位运算符: >>,<<,>>>,&,|,^,~。

例如:

a=10011101; b=00111001;

则有如下结果:    a<<3 =11101000;

a>>3 =11110011 a>>>3=00010011;    a&b=00011001; a|b=10111101;    ~a=01100010; a^b=10100100;

5 赋值运算符 =,及其扩展赋值运算符如+=,―=,*=,/=等。    例如:    i=3;

i+=3;     //等效于i=i+3;  6 条件运算符 ? :

例如:result=(sum= =0 ? 1 : num/sum);  7 其它:

包括分量运算符· ,下标运算符 [],实例运算符instanceof,内存分配运算符new,强制类型转换运算符 (类型),方法调用运算符 () 等。例如:

System.out.println("hello world");   int array1[]=new int[4];

运算符

(二)表达式

表达式是由操作数和运算符按一定的语法形式组成的符号序列。一个常量或一个变量名字是最简单的表达式,其值即该常量或变量的值;表达式的值还可以用作其他运算的操作数,形成更复杂的表达式。 1.表达式的类型

表达式的类型由运算以及参与运算的操作数的类型决定,可以是简单类型,也可以是复合类型:   布尔型表达式: x&&y||z;   整型表达式: num1+num2; 2.运算符的优先次序

表达式的运算按照运算符的优先顺序从高到低进行,同级运算符从左到右进行:

优先次序

运算符 1 . [] ()

2 ++ -- ! ~ instanceof

3 new (type) 4 * / %  5 + -  6 >> >>> << 7 > < >= <=  8 = = !=  9 & 10 ^ 11 |  12 && 13 || 14 ?:

15 = += -= *= /= %= ^= 16

&= |= <<= >>= >>>=

例如,下述条件语句分四步完成:

Result=sum==0?1:num/sum;

第1步:result=sum==0?1:(num/sum)   第2步:result=(sum==0)?1:(num/sum)   第3步:result=((sum==0)?1:(num/sum))   第4步:result=

类型转换

⑴自动转换

具体地讲,当一个较“小”数据与一个较“大”的数据一起运算时,系统将自动将“小”数据转换成“大”数据,再进行运算。而在方法调用时,实际参数较“小”,而被调用的方法的形式参数数据又较“大”时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将“小”数据转换成“大”数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最“接近”的“大”数据并进行调用。

这些类型由“小”到“大”分别为 (byte,short,char)--int--long--float—double。这里我们所说的“大”与“小”,并不是指占用字节的多少,而是指表示值的范围的大小。

请看下面的示例:

①下面的语句可以在Java中直接通过:

byte b; int i=b; long l=b; float f=b; double d=b;

②如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如

char c='c'; int i=c;

System.out.println("output:"+i);

输出:output:99;

③对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。

short i=99  char c=(char)i;

System.out.println("output:"+c);

输出:output:c;

④对象多态中若有方法: f(byte x){……}; f(short x) {……}; f(int x) {……}; f(long x) {……}; f(float x) {……}; f(double x) {……};

又有:char y=’A’;那么,语句f(y)会调用哪一个方法呢?答案是:f(int x) {……}方法,因为它的形参比实参“大”且是最“接近”的。

而对于方法: f(float x) {……}; f(double x) {……};

(window.cproArray = window.cproArray || []).push({ id: "u3054369" }

又有:long y=123L;那么,语句f(y)调用的方法则是f(float x) {……}。

⑵强制转换

将“大”数据转换为“小”数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式: int n=(int)3.14159/2;

可以想象,这种转换肯定可能会导致溢出或精度的下降。   注:

①当字节类型变量参与运算,java作自动数据运算类型的提升,将其转换为int类型。

byte b;     b=3;

b=(byte)(b*3);//必须声明byte。 ②带小数的变量默认为double类型。

float f;

f=1.3f;//必须声明f。

⑶包装类过渡类型转换

一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如: ①当希望把float型转换为double型时:   float f1=100.00f;    Float F1=new Float(f1);

double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法

②当希望把double型转换为int型时:    double d1=100.00;

Double D1=new Double(d1);    int i1=D1.intValue();

简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)

而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

3.字符串与其它类型间的转换 ⑴其它类型向字符串的转换

①调用类的串转换方法:X.toString(); ②自动转换:X+“”;

③使用String的方法:String.volueOf(X);

⑵字符串作为值,向其它类型的转换

Java二维数组的声明、初始化和引用

二维数组的声明、初始化和引用与一维数组相似,这里不再详讲。   二维数组的定义   type arrayName[ ][ ];   type [ ][ ]arrayName;

只是形式上的差别,大家可以根据自己的习惯来选择。   二维数组的初始化 1.静态初始化

int intArray[ ][ ]={{1,2},{2,3},{3,4,5}};

Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。

2.动态初始化

1) 直接为每一维分配空间,格式如下:

arrayName = new type[arrayLength1][arrayLength2];   int a[ ][ ] = new int[2][3];

2) 从最高维开始,分别为每一维分配空间:   arrayName = new type[arrayLength1][ ];   arrayName[0] = new type[arrayLength20];   arrayName[1] = new type[arrayLength21];

arrayName[arrayLength1-1] = new type[arrayLength2n];

3) 例:

二维简单数据类型数组的动态初始化如下:   int a[ ][ ] = new int[2][ ];   a[0] = new int[3];   a[1] = new int[5];

对二维复合数据类型的数组,必须现金网96y.org首先为最高维分配引用空间,然后再顺次为低维分配空间。而且,必须为每个数组元素单独分配空间。例如:   String s[ ][ ] = new String[2][ ];

s[0]= new String[2];//为最高维分配引用空间   s[1]= new String[2]; //为最高维分配引用空间

s[0][0]= new String(Good);// 为每个数组元素单独分配空间   s[0][1]= new String(Luck);// 为每个数组元素单独分配空间   s[1][0]= new String(to);// 为每个数组元素单独分配空间   s[1][1]= new String(You);// 为每个数组元素单独分配空间   二维数组元素的引用

对二维数组中的每个元

java数据类型运算符类型转换的更多相关文章

  1. Java数据类型及类型转换

    http://blog.csdn.net/pipisorry/article/details/51290064 java浮点数保留n位小数 import java.text.DecimalFormat ...

  2. java笔记 -- java数据类型与类型转换

    Java是一种强类型语言, 这就意味着必须为每一个变量声明一种类型. Java中一共有8中基本类型: 4种整型: 整型: 用于表示没有小数部分的数值, 允许为负数 类型 存储需求 取值范围 int: ...

  3. java注释 命名 数据类型 基本类型转换 位运算符 逻辑运算符 三目运算符

    一.java注释 1.单行注释  //注释内容 2.多行注释 /*注释内容*/ 3.文档注释(可用javadoc工具生成api文档,不过我还没试过)/**文档注释*/,文档注释可以在使用的时候看见注释 ...

  4. JAVA 变量 数据类型 运算符 知识小结

    ---------------------------------------------------> JAVA 变量 数据类型 运算符 知识小结 <------------------ ...

  5. JAVA的基本数据类型和类型转换

    一.数据类型 java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化. java数据类型分为基本数据类型和引用数据类型 基本数据类型有4类8种 第一类(有4种)整型: ...

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

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

  7. java与.net比较学习系列(3) 基本数据类型和类型转换

    在Java中,数据类型分为两类,一类是基本数据类型,另外一类是引用类型. 而在C#中,数据类型分为三类,分别是基元类型,值类型和引用类型.其中基元类型是.net framework框架中预定义的类型, ...

  8. 【转】java与.net比较学习系列(3) 基本数据类型和类型转换

    原文地址:https://www.cnblogs.com/mcgrady/p/3397874.html 阅读目录 一,整数类型 二,浮点数类型 三,字符类型 四,布尔类型 五,类型转换之自动转换 六, ...

  9. java基本数据类型总结 类型转换 final关键字的用法

    java基本数据类型总结 Java数据类型总结 数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式.接触每种语言的时候,都会存在数据类型的认识,有复杂的. ...

随机推荐

  1. 利用Delphi编写Socket通信程序

    一.Delphi与Socket 计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议.TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登 ...

  2. tpot ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

    机器学习训练的时候报出这个问题 是因为dataframe中的数据类型有一个是‘object’,把它转成int,或float 就行,如下 df['A'] = df['A‘].astype(int) 参考 ...

  3. “幕后英雄”之Backing Fields【Microsoft Entity Framework Core随笔】

    刘德华 有一首歌叫<马桶>,其中有一句歌词是:每一个马桶都是英雄. EFCore也有一个英雄,在幕后默默地任劳任怨.它就叫 "支持字段" (Backing Fields ...

  4. Sublime Text3 调色板 ColorPicker插件安装及快捷键

    一.安装 第一步:打开菜单栏下的tools>command palette或是快捷键ctrl+shift+p输入PI 点击第一个安装包等待跳出窗口,输入ColorPicker,待安装完成 第二步 ...

  5. 浅析Hashmap和Hashtable

    一.Hashmap不是线程安全的,而Hashtable是线程安全的 通过查看源码可以发现,hashmap类中的方法无synchronized关键字,而hashtable类中的方法有synchroniz ...

  6. Google 最新推出数据集搜索

    继Google在2004年11月推出Google的重量产品Google scholar后,Google在最近推出的另一个重量级产品 Google Dataset Search.众所周知,互联网上的信息 ...

  7. Centos7搭建docker仓库

    一:安装启动registry 1.1:环境准备 yum install -y python-devel libevent-devel python-pip gcc xz-devel pip insta ...

  8. Python字符串与格式化的一点用法

    #python的基本语法网上已经有很多详细的解释了,写在这里方便自己记忆一些 1.python于C语言不同的是,python没有字符的概念,所谓的字符就是长度为1的字符串,使用切片或者索引同样可以对字 ...

  9. VMware Pro 14.1.2 官方正式版及激活密钥

    热门虚拟机软件VMware Workstation Pro现已更新至14.1.2,14.0主要更新了诸多客户机操作系统版本,此外全面兼容Wind10创建者更新.12.0之后属于大型更新,专门为Win1 ...

  10. Spring工作原理及应用

    spring原理 内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建.调用对象,Spring就是在运行时 ...