Java: 数据类型

                    

核心:对事物的某种规范

  前提:

1.JAVA:JAVA程序的运行是以堆栈的操作来完成的

      堆栈以帧为单位保存线程的状态。

      JVM对堆栈只进行两种操作:以帧为单位的压栈和出栈操作。

理解:

2.数据类型:描述内存的一种机制(对内存位置的一个抽象表达方式

 

 

内存抽象表现形式:

1.变量:计算机存储数据的容器

变量的要素:类型(数据类型决定了变量的大小)、名称、存数据

 

规范:

使用:

变量的使用:

步骤:声明、赋值、使用

    int   a;      a=1;

    类型  变量名    值

 

规则:

--变量要先赋值后使用

--变量名不能重复,不能以数字开头,不能出现非法字符

--变量名不能是关键字

--变量名中只能有_和$这两个特殊符号

--变量名中只能由_、$、字母、数字组成,不能以数字开头

--变量名是区分大小写的

--如果一个变量名是由两个单词组成的,那么第1个单词的第1个字母小写,第2个单词的第1个字母大写。

 

核心:变量是变化的

      变量确定了数据类型,确定内存的大小

2.数据类型:基本类型和引用数据类型。

描述:

基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。

引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

 

·数据存储的特征:

  基本类型的变量和对象的引用变量都是在函数的栈内存中分配

 

    基本类型只能用来存数据, 不能用来操作判断数据

内存的开辟:在我们定义这个变量的时候。

释放:

       当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间

    特征:

       存取速度比堆要快,仅次于寄存器,栈数据可以共享

       存在栈中的数据大小与生存期必须是确定的,缺乏灵活性

 

引用类型:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;

内存在什么时候开辟:在new的时候 开辟

释放:

数组和对象在没有引用变量指向它的时候,才变为垃圾,不能在被使用,但仍 然占据内存空间不放,在随后的一个不确定的时间被垃圾回收器收走

  特点:

    动态地分配内存大小,生存期也不必事先告诉编译器

    在运行时动态分配内存,存取速度较慢

 

类别:

 基本类型:布尔类型和数值类型

     数值类型:定点类型和浮点类型

 

 引用类型:类、接口、数组

 

 

 

 

概念:

定点:定点的意思是把小数点定在末尾,小数点后没有数字的数据,Java中通常把它们称为整数;

常量:就是直接的值;

变量:放置常量的容器,除了放置常量之外,也可以给变量一个运算式,变量中的值是可变的;

1)     基本类型:

>>定点类型:

byte(字节类型) 一个byte 8位,取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)默认是0


short(短整型) 一个short 16位,取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)默认是0


int(整型)一个int 32位,取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)默认是0


long(长整型)   一个long 64位,取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)默认是0L或0l推荐用大写;

 

描述:

我们希望它是byte型的,可以在数据 后加上大写的 B:35B,表示它是byte型的,同样的35S表示short型,35L表示long型的,表示int我们可以什么都不用加,但是如果要表示long型 的,就一定要在数据后面加“L”。

核心:数据类型确定的时候,数据的存储如果超出范围会编译出错

 

字符类型:char

Java中一个字符(char)表示Unicode字符集中的一个元素。Unicode字符由16位组成,因此,有(65535)个不同的字符可用,范围从’u0000’到’uFFFF’(u告诉编译器你在用两个字节[16位]字符信息表示一个Unicode字符)。用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容,字符的存储范围在\u0000~\uFFFF,在定义字符型的数据时候要注意加' ',比如 '1'表示字符'1'而不是数值1。

 

 

>>浮点类型:

float (单精度浮点型) 一个float 32位,占用4个字节, 例3.2F,默认是0.0f , 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)。
double (双精度浮点型) 一个dobule 64位  占用8个字节, 例3.2, 默认是0.0, 1.797693e+308~ 4.9000000e-324 占用8个字节 

注:double型比float型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double型的。

     如果要表示一个数据是float型的,可以在数据后面加上“F”。 

     浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。 

基本类型赋值时的特性:

1.当整数类型的数据使用字面量赋值的时候,默认值为int类型,就是直接使用0或者其他数字的时候,值的类型为int类型,

            所以当使用    longa = 0这种赋值方式的时候,JVM内部存在数据转换。

2.浮点类型的数据使用字面量赋值的时候,默认值为double类型,就是当字面两出现的时候,JVM会使用double类型的数据类型。

3.从JDK 5.0开始,Java里面出现了自动拆箱解箱的操作,基于这点需要做一定的说明:

2)引用类型:new出来的

   Random、Scanner、集合、数组、自己定义的类、String等

   Student s     =   new Student();

    引用       对象

 

数据交换特征:

交换的本质

    基本类型只在栈中开空间

    引用类型既要在栈中开空间也要在堆中开空间

 

·默认值:

1.变量没有默认值 int a; System.out.print(a) //报错

2.数组有默认值:int[] 0 double[] 0.0 char[] AscII为0的字符3.类中的

3.属性:有默认值int 0 double 0.0 String null 自定义的类型:null

 

>>类型转换:

类型转换:

--自动类型转换(将小数据放入到大空间中,自动转换)

--强制转换:目标类型 变量名=(目标类型)其他类型的变量

    int a=(int)5.0;

一、自动转换:

       1.基本类型:类型相似  ,小的往的大

          int a = 9;

          double b = a;

 

          String a ="123"

          int  b = (int)a;错误

      2.引用类型:继承关系  子类转父类

        子类:小的类型

        父类:大的类型

 

       Son son =new Son();

       Father f = son;

       总结:父类引用指向子类对象,父类引用

       只能调用自己的属性和方法,不能调用子类

       的属性和方法(子类的特征被隐藏了)   

 

    二、强制转换:   

           1.基本类型 :类型相似  大的往小的转

       double a = 9.9;

       int b = (int)a;  //b=9

       2.引用类型:继承关系  父类转子类

         Father f  =new Father();

         Son son = (Son)f;  

       3.怎么样判断父类引用中的真实对象?

       instanceof

       Father f = new Son();

       System.out.println(f instanceof

 

Son);//ture

       System.out.println(f instanceof

 

Son1);//false

 

数据算法:

1.  运算符:

算术运算符:

1)赋值运算符=:它的作用是将右边的值复制一份到左边的空间中

 

去。

2) -,*,/,%(整除取余)-,*,/:运算数据只能是数字类型

 

的。

3)           >>进行数字相加

       5+6==11   

       1.1+2.1==3.2

       3+1.5==4.5//一个穷人和一个富人的结果是富

 

       int t=5.5+1;//错误

       double c=5.5+2;//正确

 

      

       >>+:当与字符串相加时,起连接作用

       "abc"+1=="abc1"

       "12"+3+5=="123"+5=="1235"

       "12"+2*3=="12"+6=="126"  126

4)/:

       5/2==2(穷人与穷人的结果还是穷人)

       5.0/2==2.5(穷人与富人的结果是富人)

       double a=5/2;//2.0(小数据可以放入大空间

 

内)

       int b=5/2.0;//报错(大数据不能放入小空间

 

内)

5)%(取模,整除取余)

       5%2==1

       2.2%1==0.2

表达式:运算符与数据的组合就是一个表达式

       a+b;

       int a=5;

       a>b;

关系运算符:主要是用来进行比较大小,或相等

 >,>=,<,<=,==,!= 

比较后的结果是:真(true),假(false)

--boolean flag=true

 

逻辑运算符:&&   ||  !

 

优先级:

()    !    算术运算符   关系运算符  &&   ||    =

 

语法结构:顺序结构、条件结构、逻辑结构

条件结构:

1)  if(表达式){

    //代码

     }

    

    if(flag)

 

    }else{

 

    }

if-else if-...-else

嵌套条件结构:

特点:它既能做等值判断,又可以做区间判断

2)switch(变量){

    case 值1:

       代码块;

       break;

    case 值2:

       代码块

       break;

    case 值3:

       代码块;

       break;

    default:

       代码块;

       break;

 

}

 

循环结构:

要素: 循环变量初始化、条件判断、循环体内改变循环变量。

特征:重复着做相同或相似的事,并且有变化的地方一定要有规律

 

,否则不能使用循环。

 

一,while循环

    循环变量初始化

    while(条件判断){

       循环体;

       循环体内改变循环变量;

    }

 

二,do-while循环

    do{

       循环体;

       循环体内改变循环变量;

    }while(条件判断);

 

如果第条件满足时,while和do-while执行的结果是一样的

但如果条件不满足时,while一次都不会执行,而do-while至少会

 

执行一次

 

while和do-while适合做无限次数的循环

 

三,for循环

    for(循环变量初始化;条件判断;循环体内改变循环变

 

量){

       循环体;

    }

   

for适合做有限次数的循环

 

前提:在循环中

break中断循环

break一般都是和if一起来使用

 

continue关键字的使用

继续:中止本次循环体的执行,继续下一次循环

在使用时,一般都要和if结构一起使用。否则没有意义。

 

int b=a++;++放在后面,表示先使用a的值,a再加1

int d=++c;++放在前面,表示先将c+1,再将值赋给d

转义字符:

Java中的常用转义字符见表2-1

 

 

特点:只能做等值判断,它不能做区间判断

      探测类型:int char

\r   :回车

\n   :换行

\t   :TAB键

\t   \n的用法:只可以在双引号中出现

 

\t    主要作用对齐格式   tab   8字符宽度

posted @ 2017-06-19 17:07  会说话的帆船  阅读(580)  评论(0编辑  收藏  举报