数据类型转换、运算符和方法入门

1、数据类型的转换

java中要求参与计算的数据,它们的数据类型必须要一致,否则的话将会进行数据类型的转换。

1.1 自动转换

当我们将byte类型的数据和int类型的数据进行相加时,结果会是什么类型呢?

public class Add{
	/*
		计算byte数据和int数据的和
	*/
	public static void main(String[] args){
		//定义int变量
		int a=2;
		//定义byte变量
		byte b=3;
		//使用变量c接收a和b的和
		//byte c=a+b; 无法使用byte进行接收
		int c=a+b;//可以成功接收
		//输出
		System.out.println(c);
	}
}

在这里插入图片描述

从上面来看,byte和int的数据相加时,结果为int类型。这里出现了自动类型转换,什么意思呢?取值范围小的类型会在计算时自动提升为取值范围大的类型,比如在上例中,计算时,byte类型会自动提升为int类型,所以本质上就是两个int类型数据的加法运算,所以需要使用int去进行接收。

再比如说我们将int类型的数据和double类型的数据进行相加

public class Add{
	/*
		计算double数据和int数据的和
	*/
	public static void main(String[] args){
		//定义int变量
		int a=2;
		//定义double变量
		double b=2.3;
		//a与b相加赋值给c
		//int c=a+b;  无法使用int接收
		double c=a+b;//int类型会自动提升为double
		//输出c
		System.out.println(c);
	}
}

转换规则

范围小的类型会自动向范围大的类型转换,比如byteshortchar会自动转换为int

byte、short、char–》int–》long–》float–》double

1.2 强制转换

当我们将double类型赋给int类型会发生什么呢?肯定报错啦!但是也并非无法转换,我们可以进行强制类型转换。

  • 强制类型转换:将取值范围大的数据类型转换为范围小的数据类型。

    public class Add{
    	/*
    		计算double数据和int数据的和
    	*/
    	public static void main(String[] args){
    		//定义int变量
    		int a=2;
    		//定义double变量
    		double b=2.3;
    		//a与b相加赋值给c
    		int c=(int)(a+b);//使用  (要强制转换的类型)  进行强制类型转换
    		//输出c
    		System.out.println(c);
    	}
    }
    

对比

  • 自动类型转换是java自动进行的,而强制类型转换需要我们手动进行。

缺点

  • 浮点–》整型时,会造成数据精度的丢失
  • int–》short时,需要去掉两个字节,因为int占4个字节,而short占2个字节,强制转换会造成数据丢失。

1.3 ASCII码表

首先我们知道的是,计算机只认识二进制的0和1,那么如何使计算机可以理解我们人类使用的文字呢?这就是编码表的由来。编码表是一张由人类文字和十进制数据一一对应的一张表格。

在这里插入图片描述

ASCII码表是一张将所有英文字母、数字和字符都和十进制进行对应的码表。

2、运算符

2.1 算数运算符

算数运算符描述
+加法运算
-减法运算
*乘法运算
/除法运算
%取模
++--自增、自减

整数使用以上的运算符进行运算,计算结果永远都是整数。

/*
	计算类
*/
public class Calculate{
	/*
		进行整数的除法运算
	*/
	public static void main(String[] args){
		int a=100;
		int b=3;
		System.out.println(a/b);//计算结果为:33
	}
}
  • ++运算

    变量自己增长1,用法:将++放在变量的前面或者后面。

/*
	计算类
*/
public class Calculate{
	/*
		自增运算
	*/
	public static void main(String[] args){
		//++放在变量后面
		int a=2;
		int b=3;
		int c=a+b++;//先进行加法运算,而后再进行自增加1
		System.out.println(c);//5
		
		//++放在变量前面
		int d=3;
		int e=5;
		int f=d+(++e);//先进行自增+1,而后再进行加法运算
		System.out.println(f);//9
	}
}
  • --运算

    变量自己减少1,用法:将--放在变量的前面或者后面

    /*
    	计算类
    */
    public class Calculate{
    	/*
    		自减运算
    	*/
    	public static void main(String[] args){
    		//--放在变量后面
    		int a=2;
    		int b=3;
    		int c=a+b--;//先进行加法运算,再进行自减
    		System.out.println(c);//5
    		
    		//++放在变量前面
    		int d=3;
    		int e=5;
    		int f=d+(--e);//先进行自减,而后再进行加法运算
    		System.out.println(f);//7
    	}
    }
    

2.2 赋值运算符

赋值运算符描述
=等于
+=加等于
-=减等于
*=乘等于
/=除等于
%=取模等
/*
	计算类
*/
public class Calculate{
	/*
		赋值运算符
	*/
	public static void main(String[] args){
		//= 
		int a=1;
		int b=a;//将a的值赋给b
		System.out.println(b);//1
		
		//+=
		a+=1;//等价于:a=a+1
		System.out.println(a);//2
		
		//-=
		a-=1;//等价于:a=a-1
		System.out.println(a);//1
		
		//*=
		a*=2;//等价于:a=a*2
		System.out.println(a);//2
		
		//  /=
		a/=2;//等价于:a=a/2
		System.out.println(a);//1
		
		//%=
		a%=2;//等价于:a=a%2;
		System.out.println(a);//1
	}
}

2.3 比较运算符

比较运算符描述
==判断是否相等
>判断是否大于
<判断是否小于
>=判断大于等于
<=判断小于等于
!=判断不等于
/*
	计算类
*/
public class Calculate{
	/*
		比较运算符
	*/
	public static void main(String[] args){
		//==
		System.out.println(1==2);//false
		//>
		System.out.println(1>2);//false
		//<
		System.out.println(1<2);//true
		//>=
		System.out.println(1>=2);//false
		//<=
		System.out.println(1<=2);//true
		//!=
		System.out.println(1!=2);//true
	}
}

2.4 逻辑运算符

逻辑运算符描述
&&逻辑与,只有当两边的结果都为true时,结果才为true(如果左边就是false,那么不会进行右边的运算)
||逻辑或,两边只要有一个为true,那么结果为true(如果左边为true,那么不会进行右边的运算)
!取反,!true=false,!false=true
/*
	计算类
*/
public class Calculate{
	/*
		逻辑运算符
	*/
	public static void main(String[] args){
		//&&
		System.out.println(1==1 && 2==2);//true
		System.out.println(1==2 && 2==2);//false
		//||
		System.out.println(1==1 || 2==1);//true
		System.out.println(1==2 || 2==1);//false
		//!
		System.out.println(!(1==2));//true
		System.out.println(!(2==2));//false
	}
}

2.5 三元运算符

三元运算符的格式

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

  • 当布尔表达式的值为true时,变量的值为结果1
  • 当布尔表达式的值为false时,变量的值为结果2
/*
	计算类
*/
public class Calculate{
	/*
		三元运算符
	*/
	public static void main(String[] args){
		int a=(1==2)?3:5;//1==2的计算结果为false,所以5将被赋给变量a
		System.out.println(a);//5
	}
}

3、方法入门

  • 方法:将功能抽取出来,将实现功能的代码放在一个大括号内,我们可以在其它地方对这个方法进行调用,这样实现了代码的复用,避免代码冗余。

  • 格式

    [修饰符] 返回值类型 方法名(参数列表){
      //功能代码
    }
    

3.1 方法的定义

public static void method(int a){
  System.out.println(a);
}
  • publicstatic两个关键字都是修饰符
  • void是返回值类型
  • method是方法名
  • a是方法参数

3.2 方法的调用

/*
	方法调用
*/
public class Calculate{

	public static void main(String[] args){
		method(2);//2是实参,会被赋给形参a,而后输出
	}
	
	public static void method(int a){
		System.out.println(a);
	}
}

3.3 注意事项

  • 方法必须定义在一个类中
  • 方法必须定义在其它方法外

4、扩展

1、+=的问题

/*
	+=的问题
	定义一个short类型的变量,
	对它进行+=运算,然后输出
*/
public class Calculate{

	public static void main(String[] args){
		//定义一个short变量
		short a=1;
		//进行+=运算
		a+=1;
		//输出
		System.out.println(a);//2
	}
}

从逻辑上来看:好像会报错啊,因为a+=1等价于a=a+1,因为1是int类型,那么short类型的a会进行自动提升,所以应该需要使用int类型的变量去接受才对,可是我们这里使用的是short类型的a去接受,那么为什么不报错呢?因为+=自带强制类型转换。

2、变量和常量的问题

/*
	变量和常量的问题
*/
public class Calculate{

	public static void main(String[] args){
		byte b1=1;
		byte b2=2;
		byte b3=1+2;
		byte b4=b1+b2;
		System.out.println(b3);
		//System.out.println(b4); 编译失败
	}
}
  • b3=1+2编译成功,因为1和2是固定的数据,编译器在编译时就可以确定它的结果不会超过byte类型的取值范围,故编译成功。

  • b4=b1+b2编译失败,因为b1和b2是变量,编译器无法在编译时确定它们的结果是否会超过byte类型的取值范围,所以会将他们的结果当作int类型处理

错呢?因为+=自带强制类型转换。

2、变量和常量的问题

/*
	变量和常量的问题
*/
public class Calculate{

	public static void main(String[] args){
		byte b1=1;
		byte b2=2;
		byte b3=1+2;
		byte b4=b1+b2;
		System.out.println(b3);
		//System.out.println(b4); 编译失败
	}
}
  • b3=1+2编译成功,因为1和2是固定的数据,编译器在编译时就可以确定它的结果不会超过byte类型的取值范围,故编译成功。

  • b4=b1+b2编译失败,因为b1和b2是变量,编译器无法在编译时确定它们的结果是否会超过byte类型的取值范围,所以会将他们的结果当作int类型处理

    所以我们使用byte类型去接收会编译失败。

    下一篇

    流程控制语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值