注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

JAVA的八种基本类型详细说明  

2013-02-26 17:56:51|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

JAVA的八种基本类型 复习笔记 

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 
1、整数:包括int,short,byte,long 
2、浮点型:float,double 
3、字符:char 
4、布尔:boolean

基本型别大小最小值最大值
boolean----------------
char16-bitUnicode 0Unicode 2^16-1
byte8-bit-128+127
short16-bit-2^15+2^15-1
int32-bit-2^31+2^31-1
long64-bit-2^63+2^63-1
float32-bitIEEE754IEEE754
double64-bitIEEE754IEEE754
void   


1.基本类型:存储在栈中,存储速度比较快些
byte,char,short,int,long,float,double,boolean

2.包装类,
Byte(1字节),

character(2字节),

Short(2字节),

Integer(4字节),

Long(8字节),

Float(4字节),

Double(8字节),

Boolean

这些包装类 都在java.lang包里,其中SIZE属性记录二进制位数,MIN_VALUE和MAX_VALUE记录取值范围。存储在堆中,因为使用final修饰,所以无法继承类以及重写任何方法。

3.int型值可以赋给所有数值类型的变量;

long型值可以赋给long、float、double类型的变量;
float型值可以赋给float、double类型的变量;

double型值只能赋给double类型变量。
把一个能表示更大范围或者更高精度的类型,转换为一个范围更小或者精度更低的类型时,
就需要使用强制类型转换。

例如:把一个double型值赋值给一个long类型变量,编译时会报错,即使这个值没有超出long类型的取值范围
long l = 1.0D;
除非使用强制类型转换
long l=(long) 1.0D;

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

4.byte,char,short,int四种基本类型及其包装类(需要Java5.0/1.5以上版本支持)可以用于switch语句,其它类型编译会报错。

注意:enum(枚举类型,Java5.0以上版本可用)可用于swith语句
public class Test {
    static enum e{
        A,B
    }
    public static void main(String[] args) {
        
        switch (Test.e.A) {   
                 case A:   
                     System.out.println("A");   
                    break;   
                case B:   
                    System.out.println("B");   
                   break;   
               } 
}
}
结果:A

运算符对基本类型的影响 

1.当使用+、-、*、/、%运算符对基本类型进行运算时,遵循如下规则:
   两个操作数中,先考虑是否有一个是double类型的,是的话,另一个和结果 将会被转换成double类型。以此考虑float,long,除此之外两个操作数(包括byte、short、int、char)都将会被转换成int类型。

2.当使用+=、-=、*=、/=、%=、运算符对基本类型进行运算时,遵循如下规则:
   运算符右边的数值将首先被强制转换成与运算符左边数值相同的类型,然后再执行运算,且运算结果与运算符左边数值类型相同。

面试涉及题目:
short s1=1;s1=s1+1;有什么错?short s1=1;s1+=1;有什么错?

解析:
short s1=1;//正确,int赋值给short
s1=s1+1;//编译错误,因为s1+1 结果int,转换为short,报错
s1=1+1;//正确,1+1是个编译时可以确定的常量,'+'运算在编译时就被执行了,而不是在程序执行的时候,这个语句的效果等同于s1=2
s1+=1;//正确,1首先被强制转换为short型,然后再参与运算,并且结果也是short类型

3.当使用“==”运算符在基本类型和其包装类对象之间比较时,遵循如下规则:
 1). 只要两个操作数中有一个是基本类型,就是比较它们的数值是否相等。
 2). 否则,就是判断这两个对象的内存地址是否相等,即是否是同一个对象。 

测试验证:
        int a = 1;
        int b = new Integer(1);


        Integer c = 1;
        Integer d = new Integer(1);
        
        //有一个是基本类型
        System.out.println("a==b "+(a==b));
        System.out.println("a==c "+(a==c));        
        System.out.println("a==d "+(a==b));
        System.out.println("b==c "+(b==c));
        System.out.println("b==d "+(b==d));
        //两个都是包装类对象
        System.out.println("d==c "+(d==c));
结果:
a==b true
a==c true
a==d true
b==c true
b==d true
d==c false


扩展:


3种引用类型

类class

接口interface

数组array

一、类Class引用

可以是我们创建的,这里我不多讲,主要是讲解几个java库中的类

Object :Object是一个很重要的类,Object是类层次结构的根类,每个类都使用Object作为超类,所有对象(包括数

               组)都实现这个类的方法。用Object可以定义所有的类

              如:

              Object object= new Integer(1); 来定义一个Interger类

               Integer i=(Integer) object;     在来把这个Object强制转换成Interger类

String :String类代表字符串,Java 程序中的所有字符串字面值(如"abc")都作为此类的实例来实现。检查序列的单

               个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本、在该副本中、所有的字符都被转换为                      大 写或小写形式。

Date :Date表示特定的瞬间,精确到毫秒。Date的类一般现在都被Calendar 和GregorianCalendar所有代替

Void :Void 类是一个不可实例化的占位符类,它保持一个对代表 Java 关键字 void 的 Class 对象的引用。

同时也有对应的Class如:Integer  Long  Boolean  Byte  Character  Double  Float   Short

二、接口interface引用

可以是我们创建的,这里我不多讲,主要是讲解几个java库中的接口interface

List列表 ,此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引

(在列表中的位置)访问元素,并搜索列表中的元素。List 接口提供了两种搜索指定对象的方法。从

性能的观点来看,应该小心使用这些方法。在很多实现中,它们将执行高开销的线性搜索。 List 接

口提供了两   种在列表的任意位置高效插入和移除多个元素的方法。

add() : 在列表的插入指定元素。

remove():移除列表中指定位置的元素。

             get(int index):返回列表中指定位置的元素。

 

Map

K - 此映射所维护的键的类型

V - 映射值的类型 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

put(K key,V value):将指定的值与此映射中的指定键关联(可选操作)。如果此映射以前包含一个该键的  

                   映  射 关系,则用指定值替换旧值(当且仅当,返回 true 时,才能说映射 m 包含键 k 的映射关系)。 
 remove(Object key)如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。更确切地讲,如果此 映射包含从满足(key==null ? k==null :key.equals(k))的键 k 到值 v 的映射关系,则移除该映射关系。(该映                        射最多只能包含一个这样的映射关系。) 

get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null

这里我们主要是用String List Map Object 是最常用Number ArrayList Arrays等

可以查考jdk的api

这些类和接口在

java.lang :提供利用 Java 编程语言进行程序设计的基础类。

java.unit:包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字                         符串标记生成器、随机数生成器和位数组)。

  评论这张
 
阅读(621)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016