Java学习笔记七


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.

一个类可以使用所属包中的所有类,以及其他包中的共有类。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值