Eclipse的使用
1、安装
2、打开选择工作空间,也就是存放code的路径
3、怎么样创建Java项目,包,类,接口等操作
4、包名:域名倒写。
5、cril+鼠标左键 点 系统写的方法,可以看源码
修改字体:
窗口-属性-搜索(font)-basic-Text Font
内容提示:
窗口-属性-java - editor- content assist - 将所有字符(大小写都写上)
常用快捷键:
代码整理: Ctrl + shift + F 整理整个文件
Ctrl + i 整理选中代码
快速复制鼠标所在行代码:
Ctrl + alt + ↑或者↓
快速移动代码:
alt + ↑或者↓
行注释:
ctrl + /
块注释:
Ctrl + shift + /
取消块注释:
Ctrl + shift + \
二维数组
二维数组的使用:
定义方式:
int[][] 数组名 = new int[3][4];
二维数组中有3个一维数组,每个一维数组中有4个元素
int[][] 数组名 = new int[3][];
二维数组初始化:
例题:
int a[][] = {{1,2},{2,3,4,5},{5,6,7}};
for(int i=0;i<a.length;i++) {
for(int j=0;j<a[i].length;j++) {
System.out.println(intArray1[i][j]);
}
}
1.数组的拷贝例题
public class ArrayTest7 {
public static void main(String args[]) {
String[] s = {"Mircosoft","IBM","Sun","Oracle","Apple"};
String[] sBak = new String[6];
System.arraycopy(s,0,sBak,0,s.length);
for(int i=0;i<sBak.length;i++){
System.out.print(sBak[i]+" ");
}
System.out.println();
int[][] intArray = {{1,2},{1,2,3},{3,4}};
int[][] intArrayBak = new int[3][];
System.arraycopy(intArray,0,intArrayBak,0,intArray.length);
intArrayBak[2][1] = 100;
for(int i = 0;i<intArray.length;i++){
for(int j =0;j<intArray[i].length;j++){
System.out.print(intArray[i][j]+" ");
}
System.out.println();
}
}
}
2.二维数组遍历求和操作:用二重循环求出二维数组b所有元素的和:
int[][] b={{11},{21,22},{31,32,33}}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] b={{11},{21,22},{31,32,33}};
int sum=0;
for(int i=0;i<b.length;i++){
sum+=Sum(b[i]);
}
System.out.println(sum);
}
3.生成一百个随机数,放入数组,然后排序输出。
public class HomeWork5 {
// 1.生成一百个随机数,放入数组,然后排序输出。
public static void main(String[] args) {
// TODO Auto-generated method stub
int count=0;
int[] arr=new int[100];
for(int i=0;i<100;i++){
arr[i]=(int)(Math.random()*100+1);
count++;
}
Arrays.sort(arr);
System.out.println("个数为:"+count);
System.out.println(Arrays.toString(arr));
}
public static void GeShi(int a) {
if(a%5==0){
System.out.println("\n");
}
}
}
4.题目:输入某年某月某日,判断这一天是这一年的第几天?
import java.util.Scanner;
import javax.sound.midi.SysexMessage;
import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;
public class HomeWork6 {
//2.题目:输入某年某月某日,判断这一天是这一年的第几天?
// 分析:以3月5日为例,先把前两个月的加起来,
// 然后再加上5天即本年第几天,特殊情况,
// 闰年且输入月份大于3需考虑多加一天。
// 可定义数组存储1-12月各月天数。
// 1.输入年月日
// 2.闰年? 能被4整除 不能被100整除 或者能被400整除
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
System.out.println("请输入年:");
int year=sc.nextInt();
System.out.println("请输入月:");
int month=sc.nextInt();
System.out.println("请输入日:");
int date=sc.nextInt();
int []arr={31,28,31,30,31,30,31,31,30,31,30,31};
int day=0;
for (int i = 0; i < month-1; i++) {
day+=arr[i];
}
day+=date;
if(isLeapYear(year)&&month>2){
day+=1;
}
System.out.println(day);
sc.close();
}
/**
* 判断一年是否为闰年。
* @return
*/
public static boolean isLeapYear(int year) {
return year%4==0&&year%100!=0||year%400==0;
}
}
5.数组A:1,7,9,11,13,15,17,19;数组b:2,4,6,8,10
两个数组合并为数组c,按升序排列。 要求:使用Arrays类的方法快速实现。
import java.util.Arrays;
public class HomeWork7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] A={1,7,9,11,13,15,17,19,0};
int [] B={2,4,6,8,10};
int [] C=new int[8];
C= Arrays.copyOfRange(A, 0, 8);
System.out.println(Arrays.toString(C));
C= Arrays.copyOf(C,13);
System.arraycopy(B, 0, C, 8, 5);
Arrays.sort(C);
System.out.println(Arrays.toString(C));
}
}
6.合并数组操作:现有如下一个数组:
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,
生成的新数组为: int newArr [] ={1,3,4,5,6,6,5,4,7,6,7,5} 思路: 确定出不为0的个数,这样可以开辟新数组; 从旧的数组之中,取出内容,并将其赋给新开辟的数组。
import java.util.Arrays;
public class HomeWork8 {
public static void main(String[] args) {
int count=0;
int count1=0;
int[] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
count=getvalue(oldArr, 0);
count1=oldArr.length-count;
int [] newArr=new int[count1];
for (int i = 0, j=0; i < oldArr.length; i++) {
if(oldArr[i]!=0){
newArr[j]=oldArr[i];
j++;
}
}
System.out.println(Arrays.toString(newArr));
}
/**
* 找出数组中值为0的个数
* @param num
* @param value
* @return
*/
public static int getvalue(int[] num,int value) {
int count=0;
for (int i = 0; i < num.length; i++) {
if(num[i]==0){
count++;
}
}
return count;
}
}
7.购买双色球
import java.util.Arrays;
import java.util.Scanner;
public class Lottery {
public static void main(String[] args) {
//请选择购买几个双色球
Scanner scanner=new Scanner(System.in);
System.out.println("请输入要购买几个双色球:");
int count=scanner.nextInt();
int [][] arr=new int[count][7];
for(int i=0;i<arr.length;i++){
System.out.println("你现在在购买第"+(i+1)+"个双色球");
for(int j=0;j<arr[i].length;j++){
System.out.println("请输入第"+(j+1)+"个号码的值:");
arr[i][j]=scanner.nextInt();
}
}
showLottery(arr);
scanner.close();
}
//展示购买的双色球
public static void showLottery(int[][] num) {
for(int i=0;i<num.length;i++){
System.out.println(Arrays.toString(num[i]));
}
}
}
可变参数
可变参数
作用: 作为方法的形参
形式: …
例如:
public static void show(int …num){
}
调用时候注意事项:
可变参数做形参:
1、实际参数可以给0个、1个、多个、或者给一个数组,都可以
2、如果有一个方法用可变参数做了形参,则不能再用数组做形参,会造成方法重复定义
3、可变参数做形参的时候,只能有一个可变参数,而且,可变参数必须作为最后一个参数
与数组的区别:
1.可变参数,只能作为形参存在
2.作为参数,只能作为最后一个
3.个数,只能有一个可变参数
可变参数的验证:
public class Test1 {
public static void main(String[] args) {
show();
show(1);
show(1,2,3);
int[]arr = new int[]{1,2,3,4,5};
show(arr);
System.out.println(Arrays.toString(arr));//[1,2,3,4,5]
}
/**
* 可变参数的验证
* @param num
*/
public static void show(int ...num){
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
// public static void show(int[]num){
// for (int i = 0; i < num.length; i++) {
// System.out.println(num[i]);
// }
// }
/*
* 有问题写法:可变参数只能作为最后一个参数
*
public static void testShow(int...num1,int ...num2) {
}*/
public static void testShow1(int num1,int ...num2) {
}
/*有问题写法
public static void testShow1(int ...num1,int num2) {
}*/
public static void testShow2(int[]num1,int []num2){
}
}
小结
Eclipse的使用
二维数组:
实质是每个元素是一维数组的一维数组;二维数组内存分配图
二维数组的应用
可变参数