JAVA基础概念与测试代码

JAVA基础概念

(1)类、对象:以类的方式组织代码、以对象的方式组织数据。同类对象的抽象类,类是对象的模板。
(2)变量:存储数据的单元,name、type、value三部分。
Name:标识符的规则、字符集(iso8859-1、BIG5、GB2312、GBK、GB18030、Unicode、UTF-8、UTF-16)。
Type:原始类型(byte、short、int(二进制、八进制、十六进制表示形式)、long、float、double(十进制形式、科学计数法形式)、char、boolean)和引用类型(class、interface、array)、自动类型转换、强制类型转换、类型提升问题(所有二元运算,都存在)。

/*
*测试标识符的写法
*/
public class Welcome{
	public static void main(String[] args){   
		int  $abc = 3;
		int $ = 5;
		int _123=5;
		//int 123abc = 6;    //标识符不能以数字开头
		//int  abc# = 3;    //标识符不能包含除了字母、数字、下划线、$之外的其他字符
		//int  class = 3;
		int 武汉 = 10;   //java内部采用了Unicode字符集,universal。
	}
}


//测试整数类型:byte,short,int,long。以及进制之间的转换问题
public class TestDataType {
	public static void main(String[] args){
		int a = 10;
		int a2 = 010;
		int a3 = 0xf;
	//	byte b = 200;
	//	System.out.println(b);
		System.out.println(a);
		System.out.println(a2);
		System.out.println(a3);
		System.out.println(Integer.toBinaryString(a));
		System.out.println(Integer.toOctalString(a));
		System.out.println(Integer.toHexString(a));
		int a = 0b0000_0000_0000_0000_0000_0000_0000_0011;
		int b = 1_2312_3131;
		System.out.println(a);
		System.out.println(b);
		int a5 = 10;
		long a6 = 200;
		byte b2 = 100;   //如果数据的大小没有超过byte/short/char的表述范围,则可以自动转型。
		long  a7 = 11123213232L;
		long l = 3;
		long l2 = l+3;    //L问题
	}


}


//测试浮点数
public class TestFloatType {
	public static void main(String[] args){
		//double d = 3.14;   //浮点数常量默认类型是double。
		//float f = 6.28F;
		double d2 = 314e-2;   //采用科学计数法的写法
		System.out.println(d2);
		float f = 0.1f;
		double d = 1.0/10;
		System.out.println(f==d);   //false
	}
}
//测试char
public class TestCharType {
	public static void main(String[] args){	
		char c1 = 'a';
		char c2 = '方';   //unicode  2: 0-65535
		char c3 = '\n';
		System.out.print(c1);
		System.out.print(c3);
		System.out.print(c2);
		char c4 = 'a';
		int i = c4 + 2;
		char c5 = (char)i;   //强制转型
		System.out.println(c5);
		
	//循环打印a-z
	for(int j=0;j<26;j++){
		char temp = (char)(c4+j);
		System.out.print(temp);
	}
	
	//java里面的字符串,是定义成:String类了。
	String  str = "abcdefghijklmnopqrstuvwxyz";
	System.out.println("\n"+str);
	boolean b = false;   //false
	if(b){    
        //if(b==true)..if(b=true)
		System.out.println("true");
	}
}
```

}

byte->short->int->long/char->int/int->double float->double///int…>float/long…>float/long…>double

//测试自动转型和强制转型 CAST
public class TestCast {
	public static void main(String[] args){
		byte b = 123;
		//byte b2 = 300;
		//char c = -3;
		char c2 = 'a';
		int i = c2;
		long d01 = 123213;
		float f = d01;

	//测试强制转型
	int i2 = -100;
	char c3 = (char)i2;   //-100超过char的表数范围,所以转换成完全不同的值,无意义的值!
	System.out.println(c3);
*/	
/*
	//表达式中的类型提升问题
	int a = 3;
	long b = 4;
	double d = 5.3;
	int c = (int)(a+b);   //做所有的二元运算符(+-/*%),都会有类型提升的问题!
	float f = (float)(a + d);
*/
	int money = 1000000000;  //10亿
	int years = 20;
	long total = (long)money*years;   //返回的是负数//(long)(maney*years)
	System.out.println(total);
	
	//一个人70年心跳多少次
	long times = 70L*60*24*365*70;
	System.out.println(times);
}

}

(3)局部变量、实例变量、类变量(在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量、属于类,被该类的所有实例共享,在类被载入时被显示初始化;对于该类的所有对象来说,static成员变量只有一份;可以使用“对象.类属性”来调用,不过,一般都是用”类名.类属性”;static变量置于方法区中)、常量。局部变量使用前必须要先赋值、实例变量则可以不需要。变量名、常量名、方法名、类名的命名规则。

//变量首字母小写,驼峰原则;类名首字母大写,驼峰原则;常量全部大写,单词之间下划线相隔
//实例变量、成员变量、常量
public class TestVariable {
	int t;    //实例变量,成员变量,属性
	public static void main(String[] args){
		int a; //局部变量使用之前必须要赋值,而实例变量则有缺省初值
		int b = a+3;
		int x,y,z;
		final int C=34;
		C = 35;
		final int  MAX_SPEED = 120;
	}
}

(4)运算符:算术运算符、赋值运算符、关系运算符、逻辑运算符(&&、||、!)、位运算符(&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右移运算符,右移一位相当于除2取商)、<<(左移运算符,左移一位相当于乘2)、>>>(无符号右移、忽略符号位扩展、0补最高位))、字符串连接符(+)、条件运算符、扩展运算符(+=、-=、=、/=、%=)。短路求值。运算符优先级。
//运算符Operator
算术运算符:+、-、
、/、%、++、–
赋值运算符:=
关系运算符:>、<、>=、<=、==、!=、instanceof
逻辑运算符:&&、||、!
位运算符:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右移运算符,右移一位相当于除2取商)、<<(左移运算符,左移一位相当于乘2)
条件运算符:?:
扩展运算符:+=、-=、*=、/=、%=

(1) 5/2 = 2, 5/2.0=2.5
(2) x=x+1/x+=1/x++ (06slides.pdf)
(3) CONSTANT: private static final double PI = 3.14;
(4) 函数,整形与浮点数的除法运算操作符,操作符优先级,类型转换,常量,布尔数据类型,值的比较,布尔表达式,短路求值 (07slides.pdf)
(5) Average2Integers.java

public class TestOperator {
	public static void main(String[] args){
	/*	
		double d = 10.2%3;
		System.out.println(d);
		

	int a = 3;
	int b = a++;   //执行完后,b=3。先给b赋值,再自增。
	int c = ++a;   //执行完后,c=5。先自增,再给b赋值
	System.out.println(a);
	System.out.println(b);
	System.out.println(c);
*/	
//	int c = 3/0;
	
/*	
	boolean c = 1<2&&2>(3/0); //短路运算
	System.out.println(c);
*/
/*
	//测试位运算
	int m = 8;
	int n = 4;
	System.out.println(m&n);
	System.out.println(m|n);
	System.out.println(~m);
	System.out.println(m^n);
	
    int a = 3*2*2;
	int b = 3<<3;  //相当于:3*2*2;
	int c = 12/2/2;
	int d = 12>>2;
	System.out.println(a);
	System.out.println(b);
	System.out.println(c);
	System.out.println(d);
	
	boolean b1 = true&false; //没有短路功能
	System.out.println(b1);
*/	

/*
	//扩展运算符
	int  a = 3;
	a +=5;  //a = a+5;
*/	
/*
	//字符串相连:加号两边只要有一个为字符串,则变为字符串连接符,整个结果为字符串。
	System.out.println(4+"5");
*/	
	int a=3;
	int b=5;
	String str= "";
	/*
	if(a
	str = (a<b)?"a:"a>=b";
	System.out.println(str);
}

}

(5)控制语句:顺序、语句块、选择(单选、双选、多选(if else if、switch语句(case值可以是int或者自动可以转换为int的类型byte、char、short,以及枚举和字符串,理解case穿透现象,一般每个case后面都要加break,防止case穿透)))、循环(for循环语句(迭代不一定得是i++,可以是任何的迭代),while循环语句(while先判断后执行、dowhile先执行后判断))。变量的作用域。
//控制语句
//顺序、选择(单选、双选、多选)、循环
//语句块,变量的作用域,if套嵌,switch语句,for循环语句,while循环语句(07slides.pdf)
Checkerboard.java

/*

- 测试if语句
  */
  public class TestIf {
  public static void main(String[] args) {
  	double d = Math.random();
  	int e =1+(int)(d*6);  
  	System.out.println(e);
  	

  ```
  if(e>3) {
  	System.out.println("大数!");
  	System.out.println("大数!!!!");
  }else{
  	System.out.println("小数!");
  }
  
  System.out.println("测试多选择结构");
  if(e==6){
  	System.out.println("运气非常好!");
  }else if(e>=4){
  	System.out.println("运气不错!");
  }else if(e>=2){
  	System.out.println("运气一般吧");
  }else{
  	System.out.println("运气不好!");
  }
  ```

  }
  }


//试swtich语句
public class TestSwitch {
  public static void main(String[] args) {
  	double d = Math.random();
  	int e =1+(int)(d*6);  
  	System.out.println(e);
  	System.out.println("测试多选择结构");
  	if(e==6){
  		System.out.println("运气非常好!");
  	}else if(e==5){
  		System.out.println("运气很不错!");
  	}else if(e==4){
  		System.out.println("运气还行吧");
  	}else{   //1,2,3
  		System.out.println("运气不好!");
  	}
  		System.out.println("#########################");
  	switch(e){   //int,或者自动可以转为int的类型(byte,char,short)。枚举。//JDK7中可以放置字符串。
  	case 6:
  		System.out.println("运气非常好!");
  		break;    //一般在每个case后面都要加break,防止出现case穿透现象。
  	case 5:
  		System.out.println("运气很不错!");
  		break;
  	case 4:
  		System.out.println("运气还行吧");
  		break;
  	default:
  		System.out.println("运气不好!");
  		break;
  	}
  		System.out.println("***************************下面例子反过来利用了case穿透现象!");
  	char  c = 'a';
  	int rand =(int) (26*Math.random());
  	char c2 = (char)(c+rand);
  	System.out.print(c2 + ": ");
  	switch (c2) {
  	case 'a':
  	case 'e':
  	case 'i':
  	case 'o':
  	case 'u':
  		System.out.println("元音");  
  		break;
  	case 'y':
  	case 'w':
  		System.out.println("半元音");   
  		break;
  	default:
  		System.out.println("辅音");
  	}
  }
  }


//测试JDK7中的switch新特性
public class TestSwitch02 {
public static void main(String[] args) {
	String  a = "方";
	switch (a) {   //JDK7的新特性,表达式结果可以是字符串!!!
	case "何":
		System.out.println("何");
		break;
	case "方":
		System.out.println("方");
		break;
	default:
		System.out.println("大家好!");
		break;
	}
}
}
//测试while循环的用法
public class TestWhile {
public static void main(String[] args) {
	int a = 1;    //初始化
	while(a<=100){  //条件判断
		System.out.println(a);    //循环体
		a++;  //迭代
	}
	System.out.println("while循环结束!");
	//计算:1+2+3+...+100
	int b = 1;
	int sum = 0;
	while(b<=100){
		sum += b;  //sum = sum + b;
		b++;
	}
	System.out.println("和为:"+sum); 
}
}

//while先判断后执行,dowhile先执行后判断

//测试For循环语句
public class TestFor {
public static void main(String[] args) {
	int a = 1;    //初始化
	while(a<=100){  //条件判断
		System.out.println(a);    //循环体
		a+=2;  //迭代
	}
	System.out.println("while循环结束!");
	for(int i = 1;i<=100;i++){  //初始化//条件判断 //迭代//迭代不一定非得是i++,可以是任何的迭代
		System.out.println(i);    //循环体
	}
	System.out.println("while循环结束!");
}
}
//测试break和continue
public class TestBreakContinue {
public static void main(String[] args) {
	int total = 0;
	System.out.println("Begin");
	while (true) {
		total++;
		int i = (int) Math.round(100 * Math.random());
		if (i == 88) {
			break;
		}
	}
	System.out.println("Game over, used " + total + " times.");
System.out.println("#########################");
	for (int i = 100; i < 150; i++) {
		if (i % 3 == 0) {
			continue;
		}
		System.out.println(i);
	}
System.out.println("**********************");
	int count = 0;
	outer: for (int i = 101; i < 150; i++) {
		for (int j = 2; j < i / 2; j++) {
			if (i % j == 0)
				continue outer;
		}
		System.out.print(i + "  ");
	}
}
}

(6)break、continue、带标签的break和continue:break跳出循环、continue跳出当次循环。

你可能感兴趣的:(java基础)