5.Java方法与包装

方法的定义

通常我们需要把一段代码定义为一个方法。方法包括:访问权限、方法名称、输入参数、输出参数、方法内容。
个人理解:为了像c一样,封装函数减少代码量。

方法的组成形式

拿这个main方法来讲,这也是我们接触java的第一个方法,也是所有代码的入口。

public static void main(String[] args) { // String[]表示字符串数组
  • 最前面的public是代表公开的,反之也存在private,表示该方法不可被其他文件访问
  • static代表静态的,表明这种方法可以像函数一样被外部直接调用金和访问
  • void表示该方法不返回任何数据,不存在输出参数
  • main后面带参数的圆括号表示需要填入指定的输入参数,如不需要输入则空着,如果需要输入好几个参数,则刑如:参数1类型,参数1名称,参数2类型,参数2名称。。。
方法的输入参数

A.方法没有输入参数,括号留空

设定系统获取当前时间,创建一个时间实例,分别获取当前的时分秒,并对其进行输出,将这个方法定义为Showtime( )

private static void Showtime(){
        Date date = new Date();
        int hour = date.getHours();
        int minutes = date.getMinutes();
        int seconds = date.getSeconds();
        System.out.println("当前的时间是:"+hour+"时"+minutes+"分"+seconds+"秒");
    }

B.只有一个输入参数,而且参数的格式为:参数类型,参数名称

设置当前时间的基础上小时数加1的闹钟,定义方法名称为Setalarm( )

private static void Setalarm(int addhours) {
        Date date = new Date();
        int hour = date.getHours() + addhours;
        int minutes = date.getMinutes();
        int seconds = date.getSeconds();
        System.out.println("当前设置的闹钟为:"+hour+"时"+minutes+"分"+seconds+"秒");
    }

C.当前方法具有两个输入参数
这个方法定义为Sethourandminute( ),可以实现在现在时间的基础上设置一个可以添加任意小时和分钟数的闹钟

private static void Sethourandmin(int addhour, int addminutes) {
        Date date = new Date();
        int hour = date.getHours() + addhour;
        int minute= date.getMinutes() + addminutes;
        int second = date.getMinutes();
        System.out.println("第二次设置的闹钟为:"+hour+"时"+minute+"分"+second+"秒");
    }

D.有很多个输入参数,而且参数不确定,也就是参数的个数是变化的,在java中有动态调整参数的方法,前提是这些参数的类型必须是一致的

通过输入可变参数达到设置当前时间基础上添加时分秒的效果,方法命名为Sethourminutesecond( )
,代码如下

private static void Sethourminutesecond(int...addnumber ) {
        Date date = new Date();
        int hour=date.getHours();
        int minute = date.getMinutes();
        int second = date.getSeconds();
        if (addnumber.length > 0) {
            hour += addnumber[0];
        }
        if (addnumber.length > 1) {
            minute += addnumber[1];
        }
        if (addnumber.length > 2) {
            second += addnumber[2];
        }
        System.out.println("当前设置的可变参数闹钟为:"+hour+"时"+minute+"分"+second+"秒");
    }
方法的输出参数

即使方法不输出任何参数,也需要定义一个void的返回值类型,而不是像输入参数一样直接留空

基本类型包装

数值类型的包装

先声明包装变量,然后对这个变量赋值。给包装变量赋值有三种方法:

  1. 直接通过等号把具体的数字赋值给包装

Integer oneInteger = 1;

  1. 调用Integer的valueOf方法完成指定数字的赋值

Integer oneInteger = Integer.valueOf(1);

  1. 使用关键字new创建新的包装变量

Integer oneInteger = new Integer(1);

public static void main(String[] args) {
		// 数值包装类型下面以Integer举例,其它包装类型的用法同Integer,包括Byte、Short、Long、Float、Double
		// 初始化包装变量的第一种方式:直接用等号赋值
		Integer oneInteger = 1;
		// 初始化包装变量的第二种方式:调用包装类型的valueOf方法
		//Integer oneInteger = Integer.valueOf(1);
		// 初始化包装变量的第三种方式:使用关键字new创建新变量
		//Integer oneInteger = new Integer(1);
		System.out.println("oneInteger="+oneInteger);
		byte oneByte = oneInteger.byteValue(); // 把包装变量转换成字节变量
		System.out.println("oneByte="+oneByte);
		short oneShort = oneInteger.shortValue(); // 把包装变量转换成短整变量
		System.out.println("oneShort="+oneShort);
		int oneInt = oneInteger.intValue(); // 把包装变量转换成整型变量
		System.out.println("oneInt="+oneInt);
		long oneLong = oneInteger.longValue(); // 把包装变量转换成长整变量
		System.out.println("oneLong="+oneLong);
		float oneFloat = oneInteger.floatValue(); // 把包装变量转换成浮点变量
		System.out.println("oneFloat="+oneFloat);
		double oneDouble = oneInteger.doubleValue(); // 把包装变量转换成双精度变量
		System.out.println("oneDouble="+oneDouble);
	}

布尔类型的包装

public static void main(String[] args) {
		// 初始化包装变量的第一种方式:直接用等号赋值
		Boolean boolPack = true;
		// 初始化包装变量的第二种方式:调用包装类型的valueOf方法
		//Boolean boolPack = Boolean.valueOf(true);
		// 初始化包装变量的第三种方式:使用关键字new创建新变量
		//Boolean boolPack = new Boolean(true);
		System.out.println("boolPack="+boolPack);
		// 把包装变量转换成布尔变量,需要调用包装变量的booleanValue方法
		boolean bool = boolPack.booleanValue();
		System.out.println("bool="+bool);

		// 布尔的包装变量允许直接使用逻辑运算符“!”“&”“|”“^”
		Boolean boolZhen = true;
		Boolean boolJia = true;
		Boolean not = !boolZhen;
		System.out.println("not="+not);
		Boolean and = boolZhen & boolJia;
		System.out.println("and="+and);
		Boolean or = boolZhen | boolJia;
		System.out.println("or="+or);
		Boolean xor = boolZhen ^ boolJia;
		System.out.println("xor="+xor);
		boolean equalResult = boolPack.equals(false); // 包装变量的equals方法相当于关系运算符“==”
		System.out.println("equalResult="+equalResult);
		
		boolean a = true, b = false;
		// 布尔包装类型的logicalAnd方法相当于逻辑“与”运算符“&”
		boolean andResult = Boolean.logicalAnd(a, b);
		System.out.println("andResult="+andResult);
		// 布尔包装类型的logicalOr方法相当于逻辑“或”运算符“|”
		boolean orResult = Boolean.logicalOr(a, b);
		System.out.println("orResult="+orResult);
		// 布尔包装类型的logicalXor方法相当于逻辑“异或”运算符“^”
		boolean xorResult = Boolean.logicalXor(a, b);
		System.out.println("xorResult="+xorResult);
	}

大数字类型

早期为了节约计算机的内存,给各种数值类型都分配了所占用的字节的大小,在现在计算机内存资源丰富的条件下,Java设计了大数,可以表示任意大小,也不会在局限于数字的位数。

大整数BigInteger

乍一看可能和Integer差不多,但还是存在一定的差异:

  1. Integer有三种给包装变量赋值的方法:等号直接赋值、调用valueOf方法赋值、通过关键字new创建指定数字的包装变量,在BigInteger这里只能调用valueOf方法赋值;
  2. 包装变量允许使用+ - * / %等四则运算,在大整数变量这里不能直接使用算术运算符,只能通过专门的计算方法展开计算。通过add方法取代+。使用subtract方法取代了-。使用multiply取代*,使用divide取代/,使用remainder取代取余%,使用negate取代负号运算符-。直接放代码更加直观:
public static void main(String[] args) {
		BigInteger nine = BigInteger.valueOf(9); // 生成一个指定数值的大整数变量
		BigInteger four = BigInteger.valueOf(4); // 生成一个指定数值的大整数变量
		BigInteger sum = nine.add(four); // add方法用来替代加法运算符“+”
		System.out.println("sum="+sum);
		BigInteger sub = nine.subtract(four); // subtract方法用来替代减法运算符“-”
		System.out.println("sub="+sub);
		BigInteger mul = nine.multiply(four); // multiply方法用来替代乘法运算符“*”
		System.out.println("mul="+mul);
		BigInteger div = nine.divide(four); // divide方法用来替代除法运算符“/”
		System.out.println("div="+div);
		BigInteger remainder = nine.remainder(four); // remainder方法用来替代取余数运算符“%”
		System.out.println("remainder="+remainder);
		BigInteger neg = nine.negate(); // negate方法用来替代负号运算符“-”
		System.out.println("neg="+neg);
		BigInteger abs = nine.abs(); // abs方法用来替代数学库函数Math.abs
		System.out.println("abs="+abs);
		BigInteger pow = nine.pow(2); // pow方法用来替代数学库函数Math.pow
		System.out.println("pow="+pow);
	}

总结一下,相比基本数字类型,数值范围并没有扩大,仅仅是调用方式有所区别,真正解决的是数值范围的限制,并且取消了带有明显数学印记的算术符号,这形成了非面向运算的编程风格。

大小数BigDecimal

要表示任意小数还是需要BigDecimal,设计他的目的就是代替浮点型float和双精度型double,和大整数一样,不存在范围限制,只要你能写出来就绝对可以表示出来,也不用担心他的精度问题啦!
看看他的调用代码如下:

public static void main(String[] args) {
		BigDecimal sevenAndHalf = BigDecimal.valueOf(7.5); // 生成一个指定数值的大小数变量
		BigDecimal three = BigDecimal.valueOf(3); // 生成一个指定数值的大小数变量
		BigDecimal sum = sevenAndHalf.add(three); // add方法用来替代加法运算符“+”
		System.out.println("sum="+sum);
		BigDecimal sub = sevenAndHalf.subtract(three); // subtract方法用来替代减法运算符“-”
		System.out.println("sub="+sub);
		BigDecimal mul = sevenAndHalf.multiply(three); // multiply方法用来替代乘法运算符“*”
		System.out.println("mul="+mul);
		BigDecimal div = sevenAndHalf.divide(three); // divide方法用来替代除法运算符“/”
		System.out.println("div="+div);
		BigDecimal remainder = sevenAndHalf.remainder(three); // remainder方法用来替代取余数运算符“%”
		System.out.println("remainder="+remainder);
		BigDecimal neg = sevenAndHalf.negate(); // negate方法用来替代负号运算符“-”
		System.out.println("neg="+neg);
		BigDecimal abs = sevenAndHalf.abs(); // abs方法用来替代数学库函数Math.abs
		System.out.println("abs="+abs);
		BigDecimal pow = sevenAndHalf.pow(2); // pow方法用来替代数学库函数Math.pow
		System.out.println("pow="+pow);		
	}
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值