数据类型转换与运算符

一、数据类型转换

1.数据类型转换

1.1自动数据类型转换

  1. 整数类型自动数据类型转换:当长度小的数据类型,赋值给长度长的数据类型。那么只需要在高位补零。数据的值未发生变化,只有长度变化。

    image

  2. 浮点数自动数据类型转换:当长度小的数据类型,赋值给长度长的数据类型。那么只需要在高位补零。数据的值未发生变化,只有长度变化。

  3. 将整数赋值给浮点数:精度低的往精度高的赋值,可以直接转换(不需要考虑长度)

1.2强制数据类型转换 语法:a = a(b)

  1. 当整数长度长的往长度短的赋值,需要强制数据类型转换。高位丢失,如果高位无值,则对结果没有影响。

    image

    image

    image

  2. 当浮点数精度高的往浮点数精度低的赋值,需要强制数据类型转换。丢失精度,不是四舍五入!

    image

  3. 浮点数往整数赋值,丢失精度。

    image

补充

  1. 在方法当中的申明的基本数据类型,保存在栈当中
  2. 栈具有先进后出的特性
  3. 所有的基本数据类型的值在栈当中,都为唯一值

2.运算符

基本数据类型赋的是值

引用数据类型赋的是地址

2.1赋值运算符

符号:=,+=,-=,*=,/=,%=

2.2算术运算符(条件是数值,运算的结果也是数值)

  1. +:可以用于字符串拼接(+号两边,只要有一个字符串,结果就是字符串);如果参与的表达式两边都是数值,则是加法运算。如果想在拼接的过程当中,先进行表达式的运算,需要提高表达式的优先级。加括号。

    image

    image

    image

  2. -:

  3. *:

    image

  4. /:取整:当除数或者被除数都为整数,结果取整;除数或者被除数,有任意一个为浮点数,结果为浮点
    数。

    image

    注意:除数不可为0

    image

  5. %:取余

    image

  6. ++/--:自增/自减

    • 自增在原本变量数值的基础上+1

    • 自减在原本变量数值的基础上-1

      • 前置:先自增,后运算

        image

      • 后置:先运算,在自增

        image

        image

2.3复合赋值运算符(数值,运算的结果也是数值)

在其值基础上进行运算,后再次对原变量进行赋值

2.4关系运算符

  1. 比较的目标

    1. 比较的数值:>, <, >=, <=

    2. 比较数值,还可以比较地址,boolean: == , !=。(比较两个String是否相等需要使用方法equals)

      image

  2. 比较的结果:boolean

2.5逻辑运算符

  1. 比较的目标是布尔类型
  2. 比较的结果也是布尔类型
  3. 比较的方式
    • 与&:同为true的情况下,结果为true;有一个为false,结果为false
    • 或|:同为false的情况下,结果为false;有一个为true,结果为true
    • 非 !:真到假时假亦真
  4. 长路与短路(&&短路与,&长路与,推荐使用),(|| , |)
    • 只要左面得到结果,右面不再执行
    • 无论左面是否有结果,右面都需要继续执行

2.6三目/三元运算符

语法:<结果为boolean类型的表达式> ? <表达式为true,语句1> : <表达式为false,语句2>

image

三目运算符可以嵌套

image

image

2.7位运算符(只要了解)

左位移:<< ,每位移1位 * 2
右位移:>> , 每位移1位 / 2

image

2.8类型的自动提升

  1. 字符串和其他值拼接:结果为字符串
  2. 数值运算:低位往高位提升,低精度往高精度提升

一个思考题:任意四位数,请尝试分别取出个十百千位的值

image

继续思考:换一种方式来实现

public class Test01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		System.out.print("请输入一个四位数:");
		int num = input.nextInt();
		int n;
//		System.out.println(num+"的千位是:"+(num/1000));
//		System.out.println(num+"的百位是:"+(num/100%10));
//		System.out.println(num+"的十位是:"+(num/10%10));
//		System.out.println(num+"的个位是:"+(num%10));
		
		while(num>0) {
			n = num % 10;
			System.out.println(n);
			num = num/10;
			
		}
	}
}

运行结果:
请输入一个四位数:1234
4
3
2
1

3.控制台输入

image

image

image

image

需求分析

posted @ 2023-03-04 11:00  DFshmily  阅读(21)  评论(0编辑  收藏  举报