Java学习之路-day06

今天重新回顾学习了,第一节课的内容,每次听讲完,都有新的知识,书读百遍其义自见啊,共勉!下面开始今天的总结:
1、 在JDK7开始,我们可以用数字直接表示进制。
如果你写一个数字【 以0b开头】,那么代码会默认你写的这个数字是 【二进制】的数字;
如果你写一个数字 【以0开头】,那么代码会默认认为你写的这个数字是 【八进制】的数字;
如果你写一个数字 【以0x开头】,那么代码会默认认为你写的这个数字是 【十六进制】的数字;
【总结】
0b 开头的数字是二进制的。
0 开头的数字是八进制的。
0x开头的数字是十六进制的。
2、计算机的存储单位
【1】在计算机中,最小的存储单元:字节。"
【2】个字节由8个bit位组成
【3】1个bit位其实就是二进制中的一个0或者1.
因为在计算机中,【任何数据】都是以【二进制】的形式来进行存储的。
3、.class 文件(字节码文件)
【a】public — 可以写在类的前面
— 也可以写在方法的前面
“当public放在class的前面时,表示这个类的类名一定要跟文件名保持一致。”
【b】class — 表示要开始定义一个类了。
当虚拟机看到class关键字时,就知道你要定义一个类了。
class后面跟随的单词就是这个类的名字。
类名后面的一对大括号就表示这个类的全部内容。
4、【变量的注意事项】
【a】我们一般不会把变量都定义在同一行,所以这种格式我们简单了解一下就可以了。
int a = 10;
int b = 20;
【b】变量没有赋值,不能被使用
【c】 变量只在所属的大括号中有效。

	//报错
		public static void main(String[] args) {
			int a = 20;//这个a是定义在main方法的大括号中的,所以他属于main方法的大括号
						//既然是属于main方法的
		{
			int a = 10;//所以在定义这个a的时候,内存中是有a的,重复了,所以报错。
		}
		
		System.out.println(a);
		}	

5、如何获取数组的长度
格式:【数组名称.length】这将会得到一个int数字,代表数组的长度;
【注意】数组一旦被创建,程序运行期间,长度不可改变;
int[] arrayC = new int[3];//分配一个内存地址,将地址值赋值给arrayC数组
System.out.println(arrayC.length);
arrayC = new int[5];//分配另个一个内存地址,将地址值赋值给arrayC数组
System.out.println(arrayC.length);
//虽然是arrayC同一数组名,但是new了新的数组,有两个内存地址;
6、数组的遍历
【a】代码
int[] array ={2,3,2,3,4};
for(int i=0;i<array.length;i++){
System.out.println(array[i]);//通过for循环进行array数组的逐一打印输出
}
7、数组作为方法的参数
【当调用方法时,向方法的小括号中传递参数,其实传递的就是数组的地址值】

printArray(array);//在进行方法的调用时,传递是数组的地址值;
public static void printArray(int[] array){//数组作为参数
		for(int i = 0;i<arrayA.length;i++){
			System.out.println(arrayA[i]);
		}	
}

8、数组作为方法的返回值
【注意】
【a】一个方法可以有0、1或者多个参数,但是只能有0或者1个返回值,不能有多个返回值;
【b】如果想要一个方法中产生多个结果数据?-》使用一个数组作为返回值类型即可;

public class DemoArrayReturn{
	public static void main(String[]args){
	int[] result = arrayA(10,20,30);
	System.out.println(result);//地址值a
	System.out.println(result[0]);//根据数组地址返回数组元素	

	public static int[] arrayA(int a,int b,int c){
	int sum = a + b + c;
	int avg = sum /3;
【1】   int[] array ={sum,avg};//使用静态方法中省略格式进行定义数组
	return array;
【2】	int[] array = new array[2];//使用动态方法进行定义数组
	array[0] = sum;
	array[1] = avg;
	return array;//将带着返回值返回调用处,内存地址值
	System.out.println(array);//地址值a
		}
	}
}

【注意】
【1】【任何数据类型】都能作为方法的参数类型,或者返回值类型;
【2】数组作为方法的参数,传递进去的其实是数组的地址值;
【3】数组作为方法的返回值,返回的其实也是数组的地址值;
//调用方法时,其实就是根据数组的地址值,返回数组的索引值元素;
下面是每天案例练习:
【1】求数组中的最大值

public class GetMax{
	public static void main(String[]args){
		int[] arrayA={3,4,6,7};//定义一个数组
		int max = arrayA[0];//对变量max进行初始化,赋值arrayA[0]
		for(int i = 1;i<array.length;i++){//进行数组的遍历
			if(array[i]>max){//比较各元素,并将最大值打印输出
				max = array[i];
			}
		}
		System.out.println("数组最大值:"+max);		
	}
}

【2】数组的反转
如何实现数组的反转?
【a】数组的反转,其实就是对称位置的元素交换;
【b】通常遍历数组用的是一个索引;
int i= 0;
【注意】现在表示对称位置需要两个索引;
int min = 0;
int max = array.length-1;
【c】如何交换两个变量的值;
int temp;//用第三方进行倒手
【d】数组交换什么时候停止?
—》min == max;
—》min > max;
所以数组的交换条件是:【min <max】;

public class arrayB{
	public static void main(String[]args){
		int[] arrayA = {3,4,6,7};//定义一个数组
		int temp;//定义一个变量,相当于一个倒手
		for(int min = 0,max = arrayA.length-1;min<max;min++,max--){
		//初始化 int min = 0,max = arrayA.length-1 即数组的第一元素和最后一个元素
			temp = arrayA[min];//倒手操作,进行数组元素位置的互换
			arrayA[min] = arrayA[max];
			arrayA[max] = temp;
		}
		for(int i = 0;i<arrayA.length;i++){//进行打印输出
			System.out.println(arrayA[i]);
		}
	}

}

【3】猜数字游戏
随机生成一个数,通过Scanner 键盘输入值,进行两个数值的判断,直到相等为止;

import java.util.*;//导包
public class DemoR{
	public static void main(String[]args){
		Scanner sc = new Scanner(System.in);//键盘输入
		Random r = new Random();//new一个随机数变量
		int num = r.nextInt(101);//随机生成0-100的整数
		int a;
		do{//先执行在判断,至少执行一次循环,所以变量a在do循环中赋值
			System.out.println("请输入一个整数:");
			a = sc.nextInt();//键盘输入一个整数
			if(a > num){
				System.out.println("猜大了");
			}else if(a < num) {
				System.out.println("猜小了");
			}
		}while(a != num);
		/*while(a != num){//while循环不可使用,先判断在执行,变量a无法进行赋值,编译代码会报错;
			System.out.println("请输入一个整数:");
			a = sc.nextInt();
			if(a > num){
				System.out.println("猜大了");
			}else if(a < num) {
				System.out.println("猜小了");
			}
		}*/
		System.out.println("猜对了");
		System.out.println("随机数是:"+num);
	}
}

【4】判断某年某月的天数

package cn.itcast.day04.demo02;

import java.util.Scanner;//导包

public class DemoYear {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个年份:");
        int year = sc.nextInt();

        System.out.println("请输入一个月份:");
        int month = sc.nextInt();//键盘输入年份和月份

        int dayNum = monthDay(month);

        if (isYear(year)) {判断是否为闰年
            if (month == 2) {//当年份为闰年时,二月份天数需要加1天
                dayNum++;
                System.out.println(year + "是闰年");
            } else {
                System.out.println(year + "不是闰年");
            }
        }
        System.out.println(year + "年" + month + "月份有" + dayNum + "天");
    }

    //boolean flag =false;
    //static静态方法
    public static boolean isYear(int year) {
    //定义一个判断年份是否为闰年的方法,同时将返回值返回到调用处,返回一个boolean值
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            return true;
        } else {
            return false;
        }
       // return flag;
    }
    public static int monthDay(int month) {//定义一个判断月份的方法,根据switch判断,返回一个int值
        switch (month) {
            case 1:
                return 31;//因为执行到return,代码将会自动跳出循环,所以break语句根本执行不到,写上break会报错
            //break;
            case 2:
                return 28;
            //break;
            case 3:
                return 31;
            //break;
            case 4:
                return 30;
           // break;
            case 5:
                return 31;
            //break;
            case 6:
                return 30;
            //break;
            case 7:
                return 31;
            //break;
            case 8:
                return 31;
            //break;
            case 9:
                return 30;
            //break;
            case 10:
                return 31;
            //break;
            case 11:
                return 30;
            //break;
            case 12:
                return 31;
            //break;
            default:
                System.out.println("输入月份错误,请重新输入");
                return 0;
            //break;
        }
    }
}

还有一个代码没有写完,明天更新,每天练习,提高代码的逻辑思维;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值