java--基础语法的一些细节问题

时间:2022-08-27 15:44:08

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的实例

——————————————