Java基础篇——变量、数据类型、运算符号、类型转换

目录

    • 1.变量
      • 1.1 变量
      • 1.2 变量的声明,赋值使用
      • 1.3 变量的使用方式
    • 2. 数据类型
      • 2.1 整数型
      • 2.2 小数型(浮点数)
      • 2.3 布尔类型
      • 2.4 字符型
      • 2.5 字符串
      • 2.6 转义字符
    • 3. 运算符号
      • 3.1 算术运算符
      • 3.2 一元算数运算符
      • 3.3 赋值运算符
      • 3.4 关系运算符
      • 3.5 逻辑运算符
      • 3.6 三目表达式
    • 4. 类型转换
      • 4.1 自动转型
      • 4.2 强制转型
    • 5. 自动类型提升

1.变量

1.1 变量

内存中的一小块空间,用来存储数据

  • 1bit 就是1个二进制位 不是0就是1

  • 1byte = 8bit

  • 1KB = 1024B

  • 1MB = 1024KB

  • 1GB = 1024MB

1.2 变量的声明,赋值使用

变量三要素

  • 数据类型
  • 变量名
  • 变量值

声明语法

  • 数据类型 变量名;

赋值语法

  • 变量名 = 变量值; = (赋值标识)

1.3 变量的使用方式

  1. 先声明,后赋值,再使用

    int money;
    money =10000;
    System.out.println(money);//使用变量名
    
  2. 声明并赋值

    int money = 10000;
    
  3. 多个声明并赋值

    int a,b,c=10000,d,e,f =10000;
    //只有c,f赋值了
    

2. 数据类型

  • 基本数据类型(4小类,8个)
    • 整数型
    • 小数型(浮点数)
    • 布尔型
    • 字符型
  • 引用数据类型
    • String 字符串
    • 转义字符
    • 数组(后续)
    • 对象(后续)

2.1 整数型

类型 字节 范围(二进制) 默认值
byte 1字节 -128(-2^7)->127 (2^7 -1) 0
short 2字节 -32768(-2^15)-> 32767(2^15 - 1) 0
int 4字节 -2,147,483,648(-2^31)->2,147,483,647 (2^31 - 1) 0
long 8字节 -9,223,372,036,854,775,808(-2^63)-> 9,223,372,036,854,775,807 (2^63 -1) 0L

默认的整数类型为int

long 需要在整数值后面+l(L)

2.2 小数型(浮点数)

float 4字节 单精度浮点数
double 8字节 双精度浮点数

小数不是精确存储的,所以计算是有偏差

小数默认类型是double的

float类型需要在值的后面加f/F

float f = 1.23f;// 说明是一个单精度浮点型

2.3 布尔类型

boolean 只有两个值,true (真) false (假)

长度为一个字节,不能参与运算

2.4 字符型

char类型是一个单一的 16 位 Unicode 字符;

最小值是 \u0000(即为0);

最大值是 \uffff(即为65,535);

char 数据类型可以储存任何字符;

2.5 字符串

String str =“中文”;// unicode ,不可变长度

2.6 转义字符

特殊字符无法执行输出使用,此时我们需要转义字符对特殊符号进行转义才走

char c = '\'';//字符型,对’进行转义
String str = "\“";//字符串类型,对"进行转义
特殊符号 \t \n也需要转义
String str1 = "hello\\tworld";//对特殊符号\t 转义
String str2 = "hello\\nworld";//对换行符号进行转义

\n 换行符号
\t 制表符

3. 运算符号

3.1 算术运算符

System.out.println(1+1);//加
System.out.println(1-1);//减
System.out.println(1*1);//乘
System.out.println(1/2);//除,求商  int为求商
System.out.println(1%2);//求模
//如果要求带小数的商,使用double
double d = 1.2;
System.out.println(d/2);

3.2 一元算数运算符

i++ 和++i;都是自增运算

i-- 和–i 都是自减运算

i++为先使用i的值,后对i进行+1操作,如

int i  = 1;
System.out.println(i++); //结果为1,i值为2

++i为先对i进行+1操作,再使用i的值,如

int i  = 1;
System.out.println(++i);//结果为2,i值为2

3.3 赋值运算符

将符号右边的值赋值给左边

= 为直接赋值

int money = 10000;//直接将10000赋值给money

+=,-=,/=,*=,%=都先对原值处理后再赋值

int money = 10000;
money +=10000;// 等价于 money=money+10000;
money -=10000;//money = money-10000;
money *=10000;//money = money*10000;
money /=10000;//money = money/10000;
money %=10000;//money = money%10000;//注意变量都是在操作符号的左边

3.4 关系运算符

关系运算符的结果为布尔类型

System.out.println(2>1); //返回true为布尔类型
System.out.println(1==1); //基本类型用==来比较值
System.out.println(true==false);//false 不相同
//!= 代表是否不等于
System.out.println(1.9!=1.8);//true

3.5 逻辑运算符

&&与||

&&逻辑与, 布尔表达式1&&布尔表达式2

//布尔表达式和布尔表达式2都为true,结果为true
true&&true 结果为true
false&&true 结果为false
true&&false 结果为false
false&&false 结果为false

||逻辑或, 布尔表达式1||布尔表达式2

//布尔表达式和布尔表达式2只要有一个为true,结果为true
true||true 结果为true
false||true 结果为true
true||false 结果为true
false||false 结果为false

&&与||有断路的功能,

当 && 左边的表达式为false,则完成断路,直接返回false

当||左边的表达式为true,则完成断路,直接返回true

3.6 三目表达式

类型 变量名 = 布尔表达式?结果1:结果2

//如果布尔表达式为true,结果1的值赋值给变量
		int age = 18;
		//如果布尔表达为true,执行结果1,否则执行结果2
		String desp =  age>=18?"成年":"未成年";
		System.out.println(desp);
//如果布尔表达式为false,结果2的值赋值给变量
		int age = 1;
		//如果布尔表达为true,执行结果1,否则执行结果2
		String desp =  age>=18?"成年":"未成年";
		System.out.println(desp);

4. 类型转换

4.1 自动转型

要求

  • 数据类型兼容(整数,小数)

  • 目标类型要求大于原类型

    char c =32000; 
    int  i = c;// 左边的类型要大于右边的类型 
    

char 和 short虽然都是两个字节的,但是范围不一致,所以不能自动转型

4.2 强制转型

要求

  • 数据类型兼容(整数,小数)

  • 目标类型小于原类型

    int i =10000;
    byte b = (byte)i;// 目标类型小,所以需要强制转换
    

问题:

  • 由于目标类型范围小,导致数据可能被截断掉,会出现,正数变成负数或者负数变成正数或者值变化

  • 如果目标的范围包含原始的值的

     int i = ;//如果i的范围在-128到127之内
     byte b = (byte)i;//值不变,不会丢数据
    
  • 小数转整数,小数部分直接丢弃,整数部分一样看具体的值的范围

  • 布尔类型不参与运算

  • char类型有数字的特性,所以它可以自动转成int,或者其他类型强转成char

5. 自动类型提升

数字计算 ,整数,小数

  1. 如果有double,表达式的结果为double
  2. 如果没有double,有float,结果为float
  3. 如果没有double,没有float,有long结果为long
  4. 如果没有double,没有float,没有long,有int结果为int
  5. 如果没有double,没有float,没有long,没有int,但是有char,short,byte其中的两个,结果为int
  • 字符串参与+号运算,所有类型都变为字符串类型

  • 注意()优先级高于字符串加号

System.out.println("a"+(1+2));//先执行1+2 ,结果为a3
System.out.println("a"+1+2l);//结果为a12

你可能感兴趣的:(Java基础篇,java,javase,字符串,数据结构)