16.
看一下java application ,的 main 方法:
publicstatic void main(String[] args)
{},其实 是接收一个字符串数组的方法,在学习相关只是之前,我们可以利用run configuration 选项 来为main方法传递参数:通过argument(参数)选项,中间用空格隔开。
对于本身就带有空格的参数来讲,可以使用双引号,包裹。
17.
统计一下输出的 a,b,c,出现的次数
为什么选用 HashMap,因为这是符合它的特性的,这道题中可以令 key 为数值,令value 作为出现的次数,这样做,前者不会重复,后者可以累加,首先取出元素判断(利用get方法取出,不存在会打出null),元素是否出现在集合中,如果真为 null,那就直接加进去,如果不是null,证明已经存在了,在累加一就可以了;
package com.jianjian3;
import java.util.HashMap;
public class HashMapTest
{
public static void main(String[] args)
{
HashMap map = new HashMap();
for(int i = 0; i < args.length;i++)
{
System.out.println(args[i]);
if(map.get(args[i]) ==null )
map.put(args[i],new Integer(1));
else
{
Integer in = (Integer)map.get(args[i]);
in = new Integer(in.intValue() + 1);
map.put(args[i],in);
}
}
System.out.println(map);
}
}
18.
学了那么久的集合,用一道题来总结一下;
还是那道题,输出10 ——50之间每个数字出现的次数;
并且打印出出现次数最多的数字和次数;
如果没有出现则不显示
注意的点
1:包装类的实现
2 :如何遍历map;
3:一定要理解并掌握,放入和取出key value 的 if else 方法;
4:掌握专门为集合提供方法的类Collections的方法作用;
5:在Map 中有 keySet()可以返回 key的集合,有values(),可以返回value的集合,而Collections的方法都是针对集合(collection)的方法;比如这次要找最大值;Collections.max(collection)
package com.jianjian2;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;
public class JianjianTest
{
public static void main(String[] args)
{
Map map = new HashMap();
Random random = new Random();
//如果想更好的输出结果,可以换成
//Map map = new TreeMap;这样集合就变得有序了;
for(int i = 0 ; i < 50 ; i ++)
{
int in = random.nextInt(41) + 10;
System.out.println(in);
Integern1 = new Integer(in);
if(map.get(n1)==null)
{
map.put(n1,newInteger(1));
}
else
{
int n2 = ((Integer)map.get(n1)).intValue() + 1;
Integern3 = new Integer(n2);
map.put(n1,n3);
}
}
Set set = map.keySet();
for(Iterator ite = set.iterator();ite.hasNext();)
{
Integern4 = (Integer)ite.next();
Integern5 = (Integer)map.get(n4);
System.out.println(n4 +":" + n5);
}
Integer n6 = (Integer)Collections.max(map.keySet());
//加上这句的意思是找出key 的最大值;简单;
// System.out.println(map);
}
}
19.
局部变量必须要赋初值后才可以被使用,即被定义在方法中的局部变量,而全局变量不需要,如果没有被赋初值的话,他们都有自己的默认值!一般是定义在类中的方法;
package com.jianjian2;
public class Test5
{
static int a ;
public static void main(String[] args)
{
int b;
System.out.println(a);
System.out.println(b);
}
}
这样 a可以被打印出来,但是b不可以被打印出来。
20.
彩票概率事件:
如果必须从1 - 50 之间的数字中取六个数字来抽奖,那么会有多少种情况呢:
、package com.jianjian2;
import java.util.Scanner;
public class LotteryOddsTest
{
static int lotteryOdds = 1;
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
System.out.print("Pleaseenter the nums you will draw :");
6
50
int i = s.nextInt();
System.out.println();
System.out.print("Pleaseenter the total nums:");
int j = s.nextInt();
System.out.println();
for(int m = 1 ; m <= i; m ++)
{
lotteryOdds =lotteryOdds *(j - m + 1)/m;
}
System.out.println("thelotteryodds is "+lotteryOdds);
}
}
21.
continue 语句用于跳出当前循环,回到循环首部,不结束,break语句用于跳出循环。
22.
如果想快速去的数组中的所有数据,可以调用Arrays中的toString()方法,返回一个包含数组元素的字符串,这些元素被放置在括号内,并用逗号隔开。
package com.jianjian2;
import java.util.Arrays;
public class ArrayTest
{
public static void main(String[] args)
{
int[] a = {1,2,3,4,5,6,7,8,9,10};
System.out.println(Arrays.toString(a));
}
}
输出[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
23.
数组的长度可以为零
24.
想要实现自由的拷贝数组,即自己决定拷贝目标数组的起始位置;这个方法位于System.arrayCopy();里面,方法接收五个参数
(目标数组名,目标数组拷贝起始位置(其实是下表为止index),带拷贝数组,待拷贝数组起始位置,拷贝个数),待拷贝数组拷贝时会覆盖原来数组中的元素
package com.jianjian2;
import java.util.Arrays;
public class ArrayTest3
{
public static void main(String[] args)
{
int[] a = {1,2,3,4,5};
int[] b = {6,7,8,9,10};
System.arraycopy(a,2,b,2,3);
System.out.println(Arrays.toString(b));
}
}
输出结果是:6,7,3,4,5
25.
现在改进一下,从1 – 49 中随机抽取 6 个数字,不能重复
看似简单,其实有几个难点:
1:要用数组做,要用随机做,但是随机肯定有可能会生成重复的数字,不管是随机数组元素,还是随机下标都是不行的,解决的方法就是先定义一个数组,存放1 – 49个数字,而后再去取元素的时候,取元素的下标,然后去除该下标元素的方法就是将数组中的最后一个数值改写它,比如说:数组 a[]存放元素,取完元素后 a[r] = a[n-1],
n --
就是将原数组的最大值赋给 a[r]为什么要这么做;无外乎有两种情况,就是未赋值之前,a[r]就是等于了 a[n - 1],这样,a[n - 1]不存在,符合要求;二是不等于,这样最大值没有被取到,就把最大值换给 a[r],这样就解决了这个问题;
package com.jianjian2;
import java.util.Arrays;
import java.util.Random;
public class RandomTest2
{
public static void main(String[] args)
{
Random random = new Random();
int[] a =newint[49];
for(int i = 0 ; i < a.length; i++)
{
a[i] = i + 1;
}
int[] b =newint[6];
for(int i = 0 ; i < b.length;i ++)
{
int r = random.nextInt(49) ;
b[i] = a[r];
a[r] = a[a.length - i - 1];
}
System.out.println(Arrays.toString(b));
}
}
26.
要想快速地打印一个二维数组的元素列表,可以调用:
System.out.println(Arrays.deepToString(s));
27.
日期估计在今后的编程中会很常见,在java中采用 GregorianCalendar()定义时间,也就是西历,我们所说的公历,同样具有set与get方法用以放入和取出日期,还有就是,类中有默认的日期。
28.
方法重载的陷阱:java允许重载任何方法,而不只是构造器方法,因此要完整的描述一个方法,需要指出方法名以及参数类型。这叫做方法的签名(signature)。但是返回类型不是方法签名的一部分。也就是说,不能有两个名字相同、参数类型也相同却返回不同类型值的方法。
29.
任何java程序都应该有一个main方法这句话是不对的,使用static代码块就不需要:
class StaticTest
{
static {
system.out.println(“hello world ”);
}
}
也是会打印出hello world 的;
30.
一个类可以使用所属包中的所有类,以及其他包中的共有类。