第三周周报

面试题:if......else 和三元运算符的区别?

共同点:都是对两种情况进行判断,都有表达式,

不同点:if.....else....流程控制语句的范围很大,不仅仅可以操作数据值,还可以操作输出语句去完成逻辑判断;而三元运算符仅仅是运算符,操作两个具体的数据值;

三元运算符能实现的一定能够使用if.....else......

if......else......嵌套

if(表达式1){

语句一

     if(表达式2){

语句二;

     }else{语句三;}

}else{

if(表达式2){语句三;

     }else{语句四;

    }

}

Switch语句;

switch(表达式){

case 值1:语句一;

break;

case 值2:语句二;

break;

case 值3:语句三;

break;

............

default  :语句n;

break;

}

Switch语句的注意事项:

case语句后面只能是常量;

case一但匹配成功,后面必须有break;否则会造成case穿透;

switch语句中,default语句可以出现在任何位置,不影响语句的执行流程;

语句末尾,break可以省略;

switch语句的结束条件:break结束;或者语句默认执行到末尾结束;

面试题:Switch后面变量名可以是什么样的数据类型;

本身能够跟的数据类型int long byte char;

jdk5以后可以是枚举类型enum;

jdk7以后可以是string类型;

for循环的表达式:for(单次表达式;条件表达式;末尾循环体){中间循环体;}。

while循环的表达式为:while(表达式){循环体};

for和while的区别:

for循环执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重复上述循环,当条件不

成立时则跳出当下for循环。

while循环当满足条件时进入循环,进入循环后,当条件不满足时,执行完循环体内全部语句后再

跳出(而不是立即跳出循环)

已经知道循环次数使用for循环;不知道循环次数使用while循环;

for循环实现获取所有的水仙花数:(三位数:个位^3*十位^3*百位^3=其本身)

class Firstjava {
    public static void main(String[] args) {
        int x = 100;
        while (x < 1000) {
            int shi = x % 100 / 10;
            int bai = x / 100;
            int ge = x % 10;
            if (ge * ge * ge + shi * shi * shi + bai * bai * bai == x) {
                System.out.println(x);
            }
                  x++;
        }
    }
}

百钱买百鸡

class firstDemo {
    public static void main(String[] args) {
        ji();
    }
    public static void ji() {
        for (int x = 0; x < 20; x++) {
            for (int y = 0; y < 34; y++) {
                if (7 * x + 4 * y == 200) {
                    System.out.println("公鸡:"x + " 母鸡:" + y + "小鸡: " + (100 - x - y));
                }
            }
        }
    }
}

nn乘法表

import java.util.Scanner;
public class firstDemo {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in) ;
        System.out.println("请输入一个数:");
        int max = sc.nextInt() ;
        chengFaBiao(max);
    }
    public static void chengFaBiao(int max){
        for(int a = 1 ;a<=max ; a++){
            for(int b = 1 ;b<=a;b++){
                int c =a*b ;
                System.out.print(a +"*"+b+"="+(a*b)+"\t") ;
            }
            System.out.println() ;
        }
    }
}

跳转控制语句break,continue,return;

break:结束,中断,不能单独使用;

continue:结束当前循环,立即进入下一次循环,不可以单独使用;

return:都是用在有具体返回值类型的方法中,可以单独用,但是很少单独用,结束方法去用的,

什么是java中的方法?

变量和方法名都需要满足小驼峰命名法

Java中定义的方法格式,两种定义格式,

有返回值类型的方法定义;
权限修饰符 static 返回值类型 方法名(参数类型1 参数名称1,参数2 参数名称2){
return 结果;
都是用在有具体返回值类型方法中的,可以单独用(但是很少);

方法重载Overload: 方法名相同,参数列表不同,与返回值无关,称为"方法重载"
参数列表不同:
1)参数个数不同
2)参数类型
3)或者参数类型的先后顺序
方法重载的目的:为了提供这个方法的扩展性;

数组

动态初始化:

数据类型[] 数组名称 = new 数据类型[数组长度];
或者 数据类型 数组名称[]= new 数据类型[数组长度] ;
静态初始化:
数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3...};
数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3...};
简写格式
数据类型[] 数组名称 = {元素1,元素2,元素3...};
数据类型 数组名称[] = {元素1,元素2,元素3...};

数组应用:

数组通过键盘录入:

import java.util.Scanner;
public class Text3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入5个数:");
        int[] b = new int[5];
        for (int i = 0; i < b.length; i++) {
            b[i] = sc.nextInt()
            System.out.println(b[i]);
        }
    }

数组遍历:

 public static void array1(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.println(arr[x] + "]");
            } else {
                System.out.print(arr[x] + ",");
            }
        }
    }

求指定的数据索引:

public static int index(int[] ar, int target) {
        for (int i = 0; i < ar.length; i++) {
            if (target == ar[i]) {
                return i;
            }
        }
        return -1;
    }
}

数组元素逆序输出:

class array{
          public static void main(String[] args) {
              int[] a={9,15,3,1,7,2};
              System.out.println("正序:");
              array1(a);
              System.out.println("逆序:");
              array2(a);
          }
          public static  void array1(int[]arr){
           System.out.print("[");
           for (int x=0;x< arr.length;x++){
               if (x==arr.length-1){
                   System.out.println(arr[x]+"]");
               }else {
                   System.out.print(arr[x]+",");
               }
           }
        }
        public static void array2(int ar[]){
              for(int min=0,max=ar.length-1;min<max;min++,max--){
                  int temp=ar[min];
                  ar[min]=ar[max];
                  ar[max]=temp;
              }
              array1(ar);
        }
    }

数组进行冒泡排序:

class firstDemo {
    public static void main(String[] args) {
        int array[] = {5, 4, 3, 2, 1};
        System.out.println("排序之前:");
        array1(array);
        System.out.println("排序之后:");
        array2(array);
    }
    public static void array1(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.println(arr[x] + "]");
            } else {
                System.out.print(arr[x] + ",");
            }
        }
    }
    public static void array2(int[] ar) {
        for (int y = 0; y < ar.length-1; y++) {
            for (int x = 0; x < ar.length -1-y; x++) {
                if (ar[x] > ar[x + 1]) {
                    int temp = ar[x];
                    ar[x] = ar[x + 1];
                    ar[x + 1] = temp;
                }
            }
        }
        array1(ar);
    }
}

数组元素平均数方法:

public static float average(float arr[]) {
         float sum = 0;
         float avers;
        for (int x = 0; x < arr.length; x++) {
             sum = sum + arr[x] ;
        }
        avers=sum/arr.length;
        return avers;
    }

Jvm内存分配有哪些?分别作用 ?

栈内存:
存储局部变量(在方法定义中或者方法声明上),局部变量跟方法有关的;方法进栈,方法调用完毕,里面
局部变量随着调用结束 而消失
堆内存:
new出来的东西(引用数据类型)存储在堆中,而且它是随着对象的创建完毕,产生堆内存空间地址值!
方法区:
里面很多的区域:class字节码文件区域---存储字节码文件---jvm需要加载这个类,解析这个类所有方
法以及变量
面试题:基本类型和引用类型数组作为形式参数的区别;
基本数据类型在参数传递的过程中传递的是值,形参的改变不会影响实参的变化;
引用数据类型数组在参数传递的过程中传递的是空间地址,形参的改变会影响实参的变化;

面向对象

面向对象的三大特征:封装,继承,多态

成员变量和局部变量的区别?

1)类中书写位置不同
    局部变量:方法定义中或者方法声明上
    成员变量:类中,方法外
2)内存位置不同
    局部变量:在栈内存中(跟方法相关)
    成员变量:在堆内存中(跟对象相关)
3)生命周期不同:
    局部变量:随着方法调用而存在,随着方法调用结束而消失
    成员变量:随着对象的创建而存在,随着对象的创建完毕,使用完毕对象(调用方法/访问成员变量),等待GC回收(不是立即释放内存空间)
4)初始化值不同
    局部变量: 要么直接定义并初始化 /要么就是先定义,使用之前初始化!(使用之前必须给初始化值,否则报错)
    成员变量:存在系统默认初始化,也可以直接显示初始化(不推荐直接显示初始化)

匿名对象

类名 对象名 = new 类名() ;

new 类名().成员变量=赋值;

new 类名().成员方法 ;

private :私有的 ,修饰的成员变量或者成员方法只能本类中访问  (为了保证数据安全)

this关键字
this的含义: 代表当前类对象的地址值引用
加入this---->标准类的写法     

JavaBean规范:
    1)类是具体类  class 类名{}
    2)类的属性必须私有化
    3)类中必须提供setXXX()/getXXX()  对成员变量的公共的访问方法(赋值/获取值)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值