Java基础问题记录--BabyYang
写逻辑这么久才发现自己是面向百度编程
基础的一些java用法都没记住真的太菜啦
java标准输入
基础的Scanner输入
Scanner sc = new Scanner(System.in);
sc.nextLine();
sc.next();
sc.nextInt();
参考:https://blog.csdn.net/cy973071263/article/details/88908810
格式化输出
double d = 12345.678;
//直接截断
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(d));
//四舍五入
System.out.println(String.format("%.2f", d));
System.out.println((double) Math.round(d * 100) / 100)
// output:
// 12345.67
// 12345.68
// 12345.68
hashmap遍历
hashmap遍历不会真的太蠢惹,遍历有超多方法
首先是定义 :
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
方法1 for-each 迭代 entries
这是最常见的方法,并在大多数情况下更可取的。当你在循环中需要使用Map的键和值时,就可以使用这个方法
for(Map.Entry<Integer, Integer> entry : map.entrySet()){ System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue()) }
注意:For-Each循环是Java5新引入的,所以只能在Java5以上的版本中使用。如果你遍历的map是null的话,For-Each循环会抛出NullPointerException异常,所以在遍历之前你应该判断是否为空引用。
方法2 for-each 迭代keys和values
如果你只需要用到map的keys或values时,你可以遍历KeySet或者values代替entrySet
Map<Integer, Integer> map = new HashMap<Integer, Integer>(); //iterating over keys only for (Integer key : map.keySet()) { System.out.println("Key = " + key); } //iterating over values only for (Integer value : map.values()) { System.out.println("Value = " + value); }
这个方法比entrySet迭代具有轻微的性能优势(大约快10%)并且代码更简洁
方法3 使用Iterator迭代
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator(); while (entries.hasNext()) { Map.Entry<Integer, Integer> entry = entries.next(); System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); }
这个似乎有点多余但它具有自己的优势。首先,它是遍历老java版本map的唯一方法。另外一个重要的特性是可以让你在迭代的时候从map中删除entries的(通过调用iterator.remover())唯一方法.如果你试图在For-Each迭代的时候删除entries,你将会得到unpredictable resultes 异常。
从性能方法看,这个方法等价于使用For-Each迭代
方法4 迭代keys并搜索values[超级低效]
这个方法看上去比方法1更简洁,但是实际上它更慢更低效,通过key得到value值更耗时(这个方法在所有实现map接口的map中比方法#1慢20%-200%)。 参考:https://blog.csdn.net/scgyus/article/details/79105211
数组基本操作
声明一个int型的数组
int[] array 或 int array[]
给数组分配空间
array=new int[10]
给数组赋值
a. 初始化赋值 array={0, 1, 2, 3, 4, 5}
b. 利用下标赋值 array[0] = 1
c. 使用循环赋值
for(int i=0; i<array.length();i++){
array[i] = in.nextInt();
}
数组输出
传统for,类似赋值时的方法
for each,for(int a:array)
Array中的toString方法 Arrays.toString(array)
多维数组
在java中实际上没有多维数组,只有一维数组
多维数组被解读为数组的数组
int[] [] array2 = { {1, 2}, {3, 4} )