java--基础语法的一些细节问题:
——————————————
if else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2;
三元运算符:好处:可以简化if else代码。
弊端:因为是一个运算符,所以运算完必须要有一个结果。
y>3?y=1:y=2;
——————————————
异或;就是和|有点不一样。当true ^ true = false;
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
: 两边相同结果是false。
两边不同结果是true。
——————————————
&和&&的特点:
&:无论左边是true是false。右边都运算。
&&:当左边为false时,右边不运算。
|:两边都参与运算。
||:当左边为true。右边不运算。
——————————————
转义字符:通过\ 来转变后面字母或者符号的含义。
\n:换行。
\b:退格。相当于backspace。
\r:按下回车键。window系统,回车符是由两个字符来表示\r\n.
\t:制表符。相当于tab键。
\\:\
\0:空字符
\u0022:Unicode转义字符
public class Test { public static void main(String[] args) { // \u0022 是双引号的Unicode转义字符 System.out.println("a\u0022.length() +\u0022b".length()); System.out.println("a\u0022.length() +\u0022b"); //程序打印的是表达式"a".length()+"b".length(),即2。 //\u0024是$的转义字符 System.out.println("a\u0024.length() +\u0024b".length()); System.out.println("a\u0024.length() +\u0024b"); } }——————————————
System.out.println("5+5="+(5+5));
结果是:5+5=10
System.out.println("5+5="+5+5);
结果是:5+5=55
——————————————
重载
什么时候用重载?
当定义的功能相同,但参与运算的未知内容不同。
那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
下面那些与所给语句重载了
void show(int a,char b,double c){}
a.void show(int x,char y,double z){}//没有,因为和原函数一样。
b.int show(int a,double c,char b){}//重载,因为参数类型不同。注意:重载和返回值类型没关系。
c.void show(int a,double c,char b){}//重载,因为参数类型不同。注意:重载和返回值类型没关系。
d.boolean show(int c,char b){}//重载了,因为参数个数不同。
e.void show(double c){}//重载了,因为参数个数不同。
f.double show(int x,char y,double z){}//没有,这个函数不可以和给定函数同时存在与一个类中。
——————————————
在Java中定义一个数组的方法有:
1维数组:
int[] arr = {1,2,3,4,5,6,7,8};//定元素的时候用
char[] chs = {'0','1','2','3','4','5','F'};
int[] arr = new int[3];//不定元素,定元素个数的时候用
int arr[] = new int[3];
2维数组
int[][] arr={{100,200,300,400},{500,600,700,800},{900,1000,1100,1200,1300}};
int[][] num=new int[][]{{10,20,30},{40,50},{60}};
int[][] arr = new int[3][4];
int[][] y; int y[][]; int[] y[];//都可以
int[][] arr = new int[3][];//也可以分开定义
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
——————————————
在java中,想要跳出多重循环,break有两种常用的:
1. 在外循环前面做一个标记,然后在内部循环中使用break语句,即可跳出外层循环,例如:
class Test { public static void main(String[] args) throws Exception//将异常抛出 { System.out.println("begin:"); flag: for(int i=1;i<4;i++) for(int j=1;j<3;j++) { System.out.println("i="+i+"j="+j); if(i==2&&j==1) break flag; } System.out.println("end"); } }结果:
begin:
i=1j=1
i=1j=2
i=2j=1
end
还有一种:
是让外层循环循环条件表达式结果收到内层循环体代码的控制,例如:
class Test { public static void main(String[] args) throws Exception//将异常抛出 { System.out.println("begin:"); boolean flag=true; for(int i=1;i<4&&flag;i++) for(int j=1;j<3;j++) { System.out.println("i="+i+"j="+j); if(i==2&&j==1) flag=false; } System.out.println("end"); } }结果是:
begin:
i=1j=1
i=1j=2
i=2j=1
i=2j=2
end
——————————————
class Test
{
public static void main(String[] args)
{
String s1 = "abc";//s1是一个类类型变量, "abc"是一个对象。
//字符串最大特点:一旦被初始化就不可以被改变。
String s2 = new String("abc");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
//s1和s2有什么区别?
//s1在内存中有一个对象。
//s2在内存中有两个对象。String对象,"abc"对象。
String s3="abc";
System.out.println((s1==s3));
}
}
结果是:
false
true
true
——————————————
instanceof 关键字的用法:
如:A instanceof B
判断A是否是B的实例,如果是返回true,如果不是,编译错误。
class Test { public static void main(String[] args) { Student a=new Student(); if(a instanceof Object) System.out.println("a是Object的实例"); if(a instanceof Person) System.out.println("a是Person的实例"); if(a instanceof Student) System.out.println("a是Student的实例"); if(a instanceof Postgraduate) System.out.println("a是Postgraduate的实例"); // if(a instanceof Animal) 编译失败 // System.out.println("a是Animal的实例"); } } class Person{} class Student extends Person{} class Postgraduate extends Student{} class Animal{}结果是:
a是Object的实例
a是Person的实例
a是Student的实例
——————————————