选择题
解析:题目中 “admin” 指向堆内存字符串常量池中“abmin”的地址,而userld.toLowerCase() 是以一个新的字符串对象返回的,所以两者的地址不同!
补充:
“==” 和 equals 的区别:
1) "==" 比较的是两个变量的数值是否相等,对于基本类型,比较的就是具体保存的数值,对于引用类型比较的就是两个引用类型的地址是否相同。
2)equals 方法是 Object 类的默认方法,自定义类型覆写 equals 方法可以按照属性值来比较两个对象的内容是否相等。
Test test = null;//表示该引用不指向任何对象
test.hello();
hello() 方法是一个静态方法,而静态方法的调用不依赖于任何对象,而 test 不指向任何对象,所以编译通过且正常运行
补充:
static 修饰方法,称为类方法 / 静态方法,与具体的对象无关,直接通过类名称进行访问。
super 关键字:如果想要在子类中调用被覆盖的父类中的同名属性时,使用 super 关键字,明确表明直接从父类中寻找同名属性。要求子类在调用父类的构造方法时,super() 必须放在子类构造方法的首行。
this:表示当前对象的引用
1)this 修饰属性,明确表示直接从类中寻找变量,打破就近匹配原则
2)this 修饰方法:
2.1 this 调用构造方法 this(构造方法参数)
a. this 的构造方法调用必须放在首行
b. this 的构造方法调用必须是线性的,不能成“环”
2.2 this 调用普通成员方法 this.方法名称(对应参数)
3)this 表示当前对象的引用 当前成员方法或属性是通过哪个对象调用的, this 就代表谁
D选项:this 表示当前对象的引用,而 static 修饰的方法是静态方法,静态方法的调用不依赖于对对象,所以this() 和 super() 不可以在 static 环境中使用
A. abstract 关键字定义的类称为抽象类,abstract 修饰的方法称为抽象方法,但是 abstract 不能修饰字段。
B. 抽象方法所在的类一定是抽象类,抽象方法没有方法体,也就是说声明抽象方法没有大括号
A. 类中的构造方法可以省略,省略后编译器会默认提供一个不带参数的构造方法
B. 构造方法必须和类同名,方法也可以和类同名,构造方法也算方法。
D.一个类可以定义多个构造方法(无参,有参),并且构造方法都可以发生重载
B.所有对成员变量的赋值必须放在方法的内部
C. 非抽象方法需要有方法体(大括号)
D. 抽象方法没有方法体(没有大括号)
编程题:
思路:非递增:arr[i] >= arr[i +1] 非递减 arr[i] < = arr[i + 1];
递增 : arr[i] < arr[i + 1] 递减 arr[i] > arr[i + 1];
1.当 arr[i] < arr[i + 1] 进入非递减序列判断,如果arr[i] <= arr[i +1] j则进行下一个数的判断,如果arr[i] >arr[i + 1] 时 则count ++
2.当 arr[i] > arr[i + 1] 进入非递增序列判断,如果arr[i] >= arr[i +1] j则进行下一个数的判断,如果arr[i] < arr[i + 1] 时 则count ++
3.当 arr[i] == arr[i + 1] 时,继续下一个数的判断,因为相等既可以属于非递增序列,也可以属于非递减序列
代码实现:
思路:先将整个字符串逆置,在遍历字符串,找出每个单词,对单词进行逆置
代码实现: