今天重新回顾学习了,第一节课的内容,每次听讲完,都有新的知识,书读百遍其义自见啊,共勉!下面开始今天的总结:
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;
}
}
}
还有一个代码没有写完,明天更新,每天练习,提高代码的逻辑思维;