大数据
BigInteger:用valueOf方法将普通数值转化为大数值,但它也无法直接使用算术运算符(如+、*),需要使用add和multiply来运算。
BigInteger a=BigInteger.valueOf(100)
BigInteger c=a.add(b)相当于c=a+b
BigInteger d=c.multioly(b)相当于d=c*b
Scanner in=new Scanner(System.in);
System.out.print("How many number do you need to draw");
int k=in.nextInt();
System.out.print("What is the highest number you can draw?");
int n=in.nextInt();
BigInteger lotteryOdds=BigInteger.valueOf(1);
for(int i=1;i<=k;i++)
lotteryOdds=lotteryOdds.multiply(BigInteger.valueOf(n-i+1)).divide(BigInteger.valueOf(i));
System.out.println("Your odds are 1 in"+lotteryOdds+".Good luck!");
数组
int[] a=new int[100]
把数组控制到五十万以下。
引用类型的只记住地址。
基本类型的拷贝为深拷贝,引用类型的拷贝为浅拷贝,浅拷贝指数组用一个内存,深拷贝则是不同的内存。
面向对象程序设计(OOP)
类:对事物描述的定义
静态方法是类方法,被所有对象共享。
随机生成数字:
Scanner in=new Scanner(System.in);
System.out.print("How many numbers do you need to draw?");
int k=in.nextInt();
System.out.print("What is the highest number you can draw?");
int n=in.nextInt();
int[] numbers=new int[n];
for(int i=0;i<numbers.length;i++)
numbers[i]=i+1;
int[] result=new int[k];
for(int i=0;i<result.length;i++){
int r=(int)(Math.random()*n);
result[i]=numbers[r];
numbers[r]=numbers[n-1];
n--;
}
Arrays.sort(result);
System.out.println("Bet the following combination.It will make you rich!");
for(int r:result)
System.out.println(r);
显示时间
System.out.println(LocalDate.of(1999, 12, 12));
LocalDate newYearsEve=LocalDate.of(1999, 12, 12);
int year=newYearsEve.getYear();
int month=newYearsEve.getMonthValue();
int day=newYearsEve.getDayOfMonth();
System.out.println(LocalDate.now());
LocalDate aThousandDaysLater=newYearsEve.plusDays(100000);
year=aThousandDaysLater.getYear();
month=aThousandDaysLater.getMonthValue();
day=aThousandDaysLater.getDayOfMonth();
System.out.println(aThousandDaysLater);
LocalDate date=LocalDate.now();
int month=date.getMonthValue();
int today=date.getDayOfMonth();
date=date.minusDays(today-1);
DayOfWeek weekday=date.getDayOfWeek();
int value=weekday.getValue();
System.out.println("Mon Tue Wed Thu Fri Sat Sun");
for(int i=1;i<value;i++)
System.out.print(" ");
while(date.getMonthValue()==month)
{
System.out.printf("%3d",date.getDayOfMonth() );
if(date.getDayOfMonth()==today)
System.out.print("*");
else
System.out.print(" ");
date=date.plusDays(1);
if(date.getDayOfWeek().getValue()==1)
System.out.println();
}
if(date.getDayOfWeek().getValue()!=1)
System.out.println();
Mon Tue Wed Thu Fri Sat Sun
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18* 19 20 21
22 23 24 25 26 27 28
29 30 31
域:field(属性)
构造方法:constructor
class Employee
{
private String name;
private double salary;
private LocalDate hireDay;
构造器与类同名
每个类默认有一个构造器
构造器没有返回值
构造器和new一起调用
构造器可以有0个、1个或多个参数
不要再构造器里定义与实例域同名的局部变量