zoukankan      html  css  js  c++  java
  • 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

       :回车

       :换行

       :TAB键

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

     

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

  • 相关阅读:
    JS定时刷新页面及跳转页面
    javascript 使用btoa和atob来进行Base64转码和解码
    浏览器好玩的的 console.log
    Jmeter(二十三)Jmeter-Question之“批量造数据”
    性能测试---开发世界的狂野一面
    Jmeter(二十二)Jmeter-Question之“不同线程组之间传递变量”
    Jmeter(二十一)Jmeter常见问题及场景应用
    Jmeter(二十)Beanshell or JSR223
    Jmeter(十九)Logic Controllers 之 Module Controller and Include Controller
    Jmeter(十八)Logic Controllers 之 Random Controller and Random order Controller
  • 原文地址:https://www.cnblogs.com/monion/p/7049575.html
Copyright © 2011-2022 走看看