数据类型

数据类型

  • 强类型原语言

    要求变量的使用要严格符合规定,所有的变量都必须先定义才能使用

  • 弱类型语言

  • Java基本数据类型

    1、数值类型:整数类型、浮点类型、字符类型。

    整数类型:

    byte 占一个字节(8bit/位),范围:-2^7 ~ 2^7-1(-128~127)

    short 占两个字节(16bit/位),范围 -2^15 ~ 2^15-1(-32768~32767)

    int 占四个字节(32bit/位),范围 -2^31 ~ 2^31-1 (-2147483648~2147483647) 约21亿

    long 占八个字节(64bit/位),范围 2^63 ~ 2^63-1。long类型需添加"L"后缀。

    拓展:整数:十进制 、八进制0 、十六进制0x 、二进制0b

    浮点类型:

    float占4个字节(32bit/位),能精确到6~7位,声明一个小数类型,要加F或者f,建议加F;

    double 占8字节(64bit/位),能精确到15~16位,小数类型默认是double类型;

    拓展:最好完全不要使用浮点数进行比较

    字符串类型:

    char:占两个字节(8bit/位)

    string :字符串是类

    拓展

    1、字符表示Unicode(万国码占2字节)编码表中的每一个符号,每个符号使用单引号引起来,其中前128个符号和ASCII表相同。

    public class note {
           public static void main(String[] args) {
          char s='\u0054';
            System.out.println((int)s);
              }
    }
        
    

    U+0000为Unicode编码的表示方式

    2、转义字符

    转义字符 意义 ASCLL码值(十进制)
    \a 响铃(BEL) 007
    \b 退格(BS) ,将当前位置移到前一列 008
    \f 换页(FF),将当前位置移到下页开头 012
    \n 换行(LF) ,将当前位置移到下一行开头 010
    \r 回车(CR) ,将当前位置移到本行开头 013
    \t 水平制表(HT) (跳到下一个TAB位置) 009
    \v 垂直制表(VT) 011
    ' 代表一个单引号 039
    " 代表一个双引号字符 034
    \ 代表一个反斜线字符''' 092
    ? 代表一个问号 063
    \0 空字符(NUL) 000
    \ddd 1到3位八进制数所代表的任意字符 三位八进制
    \xhh 十六进制所代表的任意字符 十六进制

    2、布尔数据类型

    boolean:占1位,有true和false2个值,一个表示真,一个表示假,一般用于表示逻辑运算

    boolean falg=true;
    if(flag==true){}
    
    if(flag){}
    

    其中上面两种情况再Java中意思相同。

  • 引用数据类型

    类、接口、数组

变量:

  1. 可以变化的量

  2. Java为强类型语言,每个变量都声明其类型;

  3. Java变量是程序中的储存单元,其组成包括变量名、变量类型、作用域

    变量的定义

int a=127;
//类型 变量名=值;

注意:

  1. 每个变量都有类型,类型可以是基本类型也可以是引用类型;
  2. 变量名必须是合法的标识符;
  3. 变量声明是一条完整的语句。必须以分号结束;

变量的作用域:

  1. 类变量
  2. 实例变量
  3. 局部变量
//变量作用域
public class note01 {
    //类变量: static
    static int salary=2400;
    //实例变量:从属于对象;如果不进行初始化,输出这个类型的默认值
    //布尔类型:默认值为false
    //除了基本类型之外的默认值为null;
    String name;
    int age;//数值类型默认值 0 0.0 字符串u0000
    //main方法
    public static void main(String[] args) {
        //局部变量:必须声明和初始化值
        int a=1;
        System.out.println(a);
        //引用实例变量
        note01 note01 =new note01();
        System.out.println(note01.age);
        System.out.println(note01.name);
        //引用类变量;
        System.out.println(salary );
    }
    // 其他方法
    public void add(){
    }
1
0
null
2400

常量:

初始化后不能再改变的值,不会变动的值;

常量分类

  • 整数类型

十进制表示方式;正常数字,比如13.25等

二进制表示方式以0b(0B)开头,如0b1011、0B1001

十六进制表示方式:0X(0x)开头,数字以0-9及A-F 组成 如0x23A2

八进制表示方式:以0开头,如01,0721

  • 小数类型,如1.0等

  • 布尔类型,true、false

  • 字符类型,字符类型必须使用‘ ’包裹,并且其中仅能包含一个字符。如:’a’ ’A’

  • 字符串类型,一种引用类型,字符串必须使用” ”包裹,其中可以包含0~n个字符;

    常量的定义

    final double IP=3.14;
    //final 类型 变量名=值;
    

变量的命名规范:

  • 所有变量、方法、类名:见名知意
  • 类成员名:首字母小写和驼峰原则:monthSalary
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则 Note
  • 方法名:首字母小写和驼峰原则 run()

数据类型转换

强制数据类型转换

自动类型转换

由于Java是强类型语言,所以进行有些运算的时候需要用到类型转换。

低-------------------------------------------------->高

byte;short,char>int >long>float>double

运算中,先把不同的类型转换为相同的类型,再进行运算。

public class note {   
	public static void main(String[] args) {
        int a=128;
        byte i=(byte)a;
        System.out.println(i);	//i输出的值为-128 内存溢出
       //强制类型转换  (类型)变量名(高到低)
        float b=10.23f;
        double c=b; 
        System.out.println(b);
         //自动类型转换(低到高)
        int money=1000000000;
        int year=20;
        long  slar=year*((long )money);
        System.out.println(slar);
        
      	char s='\u0054';
        System.out.println((int)s);//字符的本质是数字
        System.out.println((int)12.1f);//精度丢失
          }
}
//输出结果
-128
10.23
20000000000
84
12

注意:

  1. 不能对布尔类型进行转换;
  2. 不能把对象类型转化为不相干的类型;
  3. 把高容量的转化为低容量的时候需要强制转换,反之自动转换;
  4. 转换的时候可能存在内存溢出或者精度问题;
posted @ 2023-07-22 20:40  啊绮  阅读(50)  评论(0)    收藏  举报