1、在C和C++中将一个较大作用域的变量“隐藏”起来的做法,在Java里不允许
{
int x=0;
{
int x=1;//illegal
}
}import java.util.Random;
public class RandomTest {
public static void main(String[] args) {
//设置了种子(48位),则每次生成相同的伪随机序列
Random r=new Random(23);
int j=r.nextInt(100);
int i=r.nextInt();
boolean v=r.nextBoolean();
print(j);
print(i);
print(v);
}
public static void print(Object obj){
System.out.println(obj);
}
}
5、equals方法并不是判断两个对象的值相等,对象的值如何相等?equals方法是Object类提供的一个实例方法, 这个方法判断两个对象是否相等的标准和==没有区别(对于基本类型变量,且都是数值型,则只要两个变量的值相等,即返回true;对于引用类型变量,只有指向同一个对象时才返回true)String类已经重写了equals方法。
6、移位运算public class Test4 {
public static void main(String[] args) {
int i=-1;
print("i:"+Integer.toBinaryString(i)+" "+i);
i>>>=10;
print("i无符号右移10位:"+Integer.toBinaryString(i)+" "+i);//若计算结果为0001111则会省略前面的所有0
i>>=4;
print("i右移10位:"+Integer.toBinaryString(i)+" "+i);
i<<=4;
print("i左移10位:"+Integer.toBinaryString(i)+" "+i);
}
public static void print(Object obj){
System.out.println(obj);
} }public class Test {
static String ternary (int i){
return i<10?"i<10":"i>=10";
}
static String ifelse (int i){
if(i<10){
return "i<10";
}else{
return "i>=10";
}
}
static void print(Object obj){
System.out.println(obj);
}
public static void main(String[] args) {
print("ifelse():"+ifelse(11));
print("ternary():"+ternary(11));
}
} // 例程1:
public class Test5 {
public static void main(String[] args) {
Random rand=new Random(47);
float f[]=new float[10];
for(int i=0;i<10;i++){
f[i]=rand.nextFloat();
}
int i=0;
for(float x:f){
System.out.println("x["+(i++)+"]="+x);
}
}
}
//例程2:
public class Test {
public static void main(String[] args) {
for(char x:"niao peng".toCharArray()){
System.out.println(x+" ");
}
}
}public class Test {
public static void main(String[] args) {
int i = 0;
outer: while (true) {
System.out.println("Outer while loop");
while (true) {
i++;
System.out.println("i=" + i);
if (i == 1) {
System.out.println("Continue");
continue;
}
if (i == 3) {
System.out.println("continue outer");
continue outer;
}
if (i == 5) {
System.out.println("break");
break;
}
if(i==7){
System.out.println("break outer");
break outer;
}
}
}
}
}14、switch()语句中的参数只能是整数值如int、char,每一个执行路径都得加break,否则继续执行下面的语句switch(integral-selector){
case integral-value1:statement;break;
case integral-value1:statement;break;
...
default:statement;
}15、Java是如何区分重载的方法:每个重载的方法必须有一个独一无二的参数类型列表(甚至参数的顺序不同也能区分两个方法,但是这样做使得代码难以维护),不可以用方法的返回类型不同来区分。基本类型参数传递给重载方法时可以将一个"较小"的类型自动提升至一个"较大"的类型。假如方法接受较小的基本类型参数,而实际传入的参数较大,则必须通过类型转换来窄化,否则编译器报错。public class TestFinalize {
private static TestFinalize tf=null;
public static void main(String[] args) throws InterruptedException {
new TestFinalize ();
System.gc();
Thread.sleep(4000);//这句话不能少,虽然显式调用了System.gc(),但是系统没有立即执行,程序暂停时才执行了垃圾回收
tf.showInfo();
}
public void finalize() {
tf=this;
}
public void showInfo(){
System.out.println("showInfo() has been called!");
}
}
public class Test {
public static void main(String[] args) {
House h = new House();
h.print();
}
}
class Window {
Window(int a) {
System.out.println("Window(" + a + ")");
}
}
class House {
Window window1 = new Window(1);
public House() {
System.out.println("House");
window3 = new Window(33);
}
Window window2 = new Window(2);
void print() {
System.out.print("zpc");
}
Window window3 = new Window(3);
}
static {
int i=0;
System.out.println("initialized");
}//该块只执行一次,即该类加载时,因此static修饰的初始化块总是普通块先执行
{
int i=0;
System.out.println("initialized");
}//每次实例化该类都执行 Integer[] b=new Integer[]{
new Integer(1),new Integer(2),3,
};public class Test {
static void f(int require,String... args){
System.out.print("require:"+require);
for(String s:args){
System.out.print(" "+s);
}
System.out.println();
}
public static void main(String[] args) {
f(1,"one");
f(2,"one","two");
f(0);
}
}注:可变形参只能处于参数列表的最后,一个方法最多包涵一个长度可变的形参。调用一个形参长度可变的方法时,除了可以传入多个参数,也可以直接传入数组,甚至不传参数。 public enum SeasonEnum {
SPRING,SUMMER,FALL,WINTER;
} //enum关键字在某种程度上和class、interface关键字作用大致相似public enum SeasonEnum {
SPRING("春天"),SUMMER("夏天"),FALL("秋天"),WINTER("冬天");
private String season;
private SeasonEnum(String season){
this.season=season;
}
public String getSeason(){
return this.season;
}
public static void main(String[] args){
SeasonEnum se=Enum.valueOf(SeasonEnum.class, "FALL");//SeasonEnum se=FALL;
System.out.println(se.getSeason());
se.season="春天";
System.out.println(se.getSeason());
}
}
Thinking In Java琐碎知识点摘要(一),布布扣,bubuko.com
原文:http://blog.csdn.net/hellozpc/article/details/23128025