java中的常用类

一、如何产生一个随机数?

 

    需要使用java.lang包中的Math类,Math类有一个产生随机数的方法是:random();

 

    例如:

    int i = (int)(Math.random()*4);

    Math.random()返回的是大于等于0小于1的随机数,带正号的double值。如果乘以一个正整数,则会返回0——正整数之间的随机数,而并不包括这个正整数,是为什么呢?

 

    就是因为这个方法返回的是0-1之间的随机数,随机数不会返回1,因此乘上一个整数还是只会返回0——这个整数之间的随机值。

 

二、Math类的常用方法

package com.changyongclass;

public class MathTest {
public static void main(String[] args) {
int i = -123;
//绝对值
System.out.println(Math.abs(i));
//正平方根
System.out.println(Math.sqrt(3.33));
//多少次幂
System.out.println(Math.pow(2d, 3));
//两数较大者
System.out.println(Math.max(3d, 2d));
//两数较小者
System.out.println(Math.min(3d, 5d));
//double转long
System.out.println(Math.round(5.555555d));
}
}

 

三、基本数据类型的包装类

 

1、为什么需要给基本数据类型提供包装类?

 

    因为Java语言中“一切皆对象”,但是基本数据类型有些违背这个原则。对象有方法,有属性,基本数据类型没有啊。

所以为了体现面向对象的思想,就为每一个基本类型提供了包装类,包装类提供了很多方法,可以简化程序的编写。

 

2、使用基本数据类型与使用封装类型有些什么不同呢?

    基本数据类型的特点是存储范围较小,但在程序中会大量的使用。我们知道new出来的对象是在堆中创建的,但在堆中分配内存的效率要远低于栈空间,因此,Java对于这些小的简单的变量给予特殊的对待,即,将其放在栈空间,这样就会更加高效。

 

3、基本数据类型与包装类的对应关系是怎样的?

boolean-----------------Boolean

byte----------------------Byte

short---------------------Short

char----------------------Character

int------------------------Integer

long----------------------Long

float----------------------Foat

Double-------------------Double

 

4、javaSE5的规范中实现了基本类型与包装类的自动拆装箱

例:

Character ch = 'x';//自动装箱

charc = ch; //自动拆箱

 

五、Enum枚举类

 

1、为什么要使用枚举?

 

    有些时候我们想让变量的取值在一个有限的集合内,如果变量的值没有限定在有限的集合内,就有可能在变量中保存一个错误的值。

 

2、下面是我对枚举类知识点的总结:

package com.lesson5;

 

import java.util.ArrayList;

import java.util.List;

 

public class Card {

/**

* 定义在类里面的枚举,相当于java里面的类部类一样

*/

/**

* DEUCE...相当于Rank类的一个实例

*

*1、 枚举生成类的实例的方式与生成普通类的实例的方式有些区别

* 也就是说,放在枚举类型里面的变量,它们都是我们枚举类型

* 里面的实例

*

* 2、如果不对一个普通类做限制可以生成任意多个实例, 对于枚举

* 来说,在定义枚举的时候已经定义好了,也就是说,枚举的实例

* 数量是有限的

*/

public enum Rank{

DEUCE,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING,ACE;

}

public enum Suit{

CLUBS,DIAMONDS,HEARTS,SPADES

}

/**

* 定义枚举类型的变量

*/

private final Rank rank;

private final Suit suit;

/**

* 定义构造方法 对Ranksuit赋值 ,初始化

* 此构造方法是private类型的,也就是说,我们不能在类的外面

* 去使用这个类的构造方法,private的构造方法,最多的用在单

* 态,也就是singleton的设计模式里面,用来保证一个类只有一

* 个实例

* @param rank

* @param suit

*/

private Card(Rank rank,Suit suit){

this.rank = rank;

this.suit = suit;

}

/**

* 用于返回我们定义的的的ranksuit

* @return

*/

public Rank rank(){

return rank;

}

public Suit suit(){

return suit;

}

/**

* 重写toString()

* java里面所有类的顶层类都是Object的,

*/

public String toString(){

//此处rank suit又会调用它们的toString()方法,打印出来。

return rank + " of " + suit;

}

private static final List<Card> protoDeck = new ArrayList<Card>();

/**

* 静态代码块

* 执行的时机是在类被加载之后,执行的,它只执行一次,且仅执行一次

* 它是早于构造方法去执行的,并且仅仅在类进行实例化的时候,执行一次,

* 以后再实例化的时候,这个静态代码块就永远不会再去执行了。

*/

static {

for(Suit suit : Suit.values()){

for(Rank rank : Rank.values()){

protoDeck.add(new Card(rank,suit));

}

}

}

/**

* 定义静态方法 执行一个集合拷贝

*/

public static ArrayList<Card> newDeck(){

//它会将protoDeck对象的一个拷贝,构造ArrayList的时候,将之前的构造的ArrayList

//作为参数传进去了,它会直接拷进新的集合里面去,然后返回

return new ArrayList<Card>(protoDeck);//return copy of prototype deck

}

public static void main(String[] args) {

for(Card card:protoDeck){

//打印card实际上是调用card.toString()方法,在这里面已经将toString()进行重写

//

System.out.println(card);

}

}

}

package com.lesson5;

 

public enum Coin {

/**

* 定义枚举里面的元素

*/

/**

* 定义枚举里面的变量,这里面的每一个都是Coin这样一个类型

* 相当于它的一个实例,给它提供了一个构造方法,对于枚举来

* 说,这里面跟类是一样的,对于我们不提供一个类的构造方法

* 来说,jdk在编译的时候,会给它生成一个不带参数的默认构造方法

* 这个构造方法什么都不做。

*

* 枚举也是一样的,对于没有枚举构造方法,在编译之后,java

* 自动的给它生成一个不带参数的构造方法

*

* 在此类中,我们给它提供了一个构造方法,一个带参数的构造方法,

* 因此下面的相当于实例的元素,也需要带上构造方法。

* 相当于之前我们做new Student(12);

*/

penny(1),nickel(5),dime(10),quarter(25);

/**

* 枚举可以定义任何的变量,任何的方法,

*/

private int value;

 

public int getValue() {

return value;

}

/**

* 枚举实际上也是一种特殊的类

* 枚举也有构造方法

* @param value

*/

Coin(int value){

this.value = value;

}

public static void main(String[] args) {

//用枚举的某一个实例给枚举进行赋值

Coin coin = Coin.quarter;

//赋值时,就已经将25赋给了value,再通过getValue()得到值。

System.out.println(coin.getValue());

}

}

package com.lesson5;

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值