面试题: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 结果;都是用在有具体返回值类型方法中的,可以单独用(但是很少);
数组
动态初始化:
数组应用:
数组通过键盘录入:
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内存分配有哪些?分别作用 ?
面向对象
面向对象的三大特征:封装,继承,多态
成员变量和局部变量的区别?
1)类中书写位置不同
局部变量:方法定义中或者方法声明上
成员变量:类中,方法外
2)内存位置不同
局部变量:在栈内存中(跟方法相关)
成员变量:在堆内存中(跟对象相关)
3)生命周期不同:
局部变量:随着方法调用而存在,随着方法调用结束而消失
成员变量:随着对象的创建而存在,随着对象的创建完毕,使用完毕对象(调用方法/访问成员变量),等待GC回收(不是立即释放内存空间)
4)初始化值不同
局部变量: 要么直接定义并初始化 /要么就是先定义,使用之前初始化!(使用之前必须给初始化值,否则报错)
成员变量:存在系统默认初始化,也可以直接显示初始化(不推荐直接显示初始化)
匿名对象
类名 对象名 = new 类名() ;
new 类名().成员变量=赋值;
new 类名().成员方法 ;
private :私有的 ,修饰的成员变量或者成员方法只能本类中访问 (为了保证数据安全)
this关键字
this的含义: 代表当前类对象的地址值引用
加入this---->标准类的写法
JavaBean规范:
1)类是具体类 class 类名{}
2)类的属性必须私有化
3)类中必须提供setXXX()/getXXX() 对成员变量的公共的访问方法(赋值/获取值)