javase入门总结(2023/11/07)

目录

1、 switch

 2、ifelse和switch使用区别

3、for循环 

4、while

 5、break,continue,return 

 6、数组

7、值传递和引用传递

8、冒泡排序

9、二维数组

10、类与对象

11、类和对象的内存分配机制 

12、方法调用机制


1、 switch

  • 表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int
  • switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum[枚举].String)
  • case子句中的值必须是常量,而不能是变量
  • default子句是可选的,当没有匹配的case时,执行default
  • break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break;一穿百穿
  • 当然,当没写default时,最后一个case可以不用写break
//打印该月份所属的季节。
		//3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季

		Scanner myScanner = new Scanner(System.in);
		System.out.println("输入月份");
		int month = myScanner.nextInt();
		switch(month) {
			case 3:
			case 4:
			case 5:
				System.out.println("这是春季");
				break;
			case 6:
			case 7:
			case 8:
				System.out.println("这是夏季");
				break;
			case 9:
			case 10:
			case 11:
				System.out.println("这是秋季");
				break;
			case 1:
			case 2:
			case 12:
				System.out.println("这是冬季");
				break;
			default :
				System.out.println("你输入的月份不对(1-12)");

 2、ifelse和switch使用区别

  •  如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可 以使用,建议使用 swtich 语句。
  • 其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广

3、for循环 

  • for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。
    //表示一个无限循环
    for(::){}
  • 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代 语句,中间用逗号隔开。

4、while

//空心金字塔
		Scanner myScanner =new Scanner(System.in);
		int n=myScanner.nextInt(); //总层数,同时也是第一层点的位置
		int max=2*n-1;//最后一层*的数量
		int i=1;//层数
		int j=0; //与中心点的距离,逐层递增

		while(i<=n){ //前n-1层
			int k=1; //某一层的第k个位置
			while(k<=max){
				if(k == n - j || k == n + j || i == n){ //前n-1层的*的位置||第n层全*
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
				k++;
			}
			System.out.println();
			i++;
			j++;
		}

 5、break,continue,return 

  • break,跳出本次循环,往下走(循环不再执行),可以结合标签使用。
  • continue,结束本次循环,进行下一次循环,(本次循环continue自后的语句不再执行),可以结合标签使用
  • return,结束所在方法(跳出最近的一对{???}),在main中使用结束程序

 6、数组

数组创建后,如果没有赋值,有默认值 int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000(\u表示后边是十六进制),boolean false,String null

//以下定义也能编译通过
		int[] num =new int[]{1,2,3,4,5,6};

7、值传递和引用传递

基本数据类型用的是值传递(传递一个备份)

数组用的是引用传递(传递地址)

8、冒泡排序

//冒泡排序
        //每轮确定一个最大的数,所以比较n-1轮,即确定后n-1个数就排序完毕
        //每轮比较次数递减,n-1 -> n-2 -> n-3 ->...->1
        int temp;
        int[] num={11,22,55,99,33,44,66,77,66};
        int length=num.length;


        for(int i=0;i<length-1;i++){
            System.out.println(i);
            for(int j=0;j<length-1-i;j++){
                if(num[j]>num[j+1]){
                    temp=num[j];
                    num[j]=num[j+1];
                    num[j+1]=temp;
                }
            }
        }
        for(int i=0;i<=num.length-1;i++){
            System.out.print(num[i]+" ");
        }

9、二维数组

//杨辉三角
		Scanner myScanner = new Scanner(System.in);
		int n = myScanner.nextInt();

		int [][] yang=new int [n][];
		for(int i=0;i<yang.length;i++){ //第i层
			yang[i]=new int[i+1];
			for(int j=0;j<=i;j++){ //第i层有i个
				if(j == 0 || j== i){
					yang[i][j]=1;
				}else{
					yang[i][j] =yang[i-1][j-1]+yang[i-1][j];
				}
			}
		}

		//输出
		for(int i=0;i<yang.length;i++){
			for(int j=0;j<yang[i].length;j++){
				System.out.print(yang[i][j]+" ");
			}
			System.out.println();
		}

10、类与对象

  • 对象的属性如果不赋值,有默认值,规则和数组一致。具体说: int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000, boolean false,String nul

11、类和对象的内存分配机制 

Java 内存的结构分析

  • 栈: 一般存放基本数据类型(局部变量)
  • 堆: 存放对象(Cat cat , 数组等)
  • 方法区:常量池(常量,比如字符串), 类加载信息
  • 示意图: 
  • 具体例子分析
            //先加载 Person 类信息(属性和方法信息, 只会加载一次)
    		//在堆中分配空间, 进行默认初始化(默认值和数组默认值一样)
    		//把地址赋给 p , p 就指向对象
    		Person p = new Person();
    		
    		//进行指定初始化, 比如 p.name =”jack” p.age = 1
    		p.name = “jack”;
    		p.age = 10

12、方法调用机制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值