20145219 《Java程序设计》第02周学习总结

20145219 《Java程序设计》第02周学习总结

教材学习内容总结

  • 类型:基本类型、类类型(参考类型)

  • 基本类型:

    整数:short占2字节,int占4字节,long占8字节

    字节:byte占1字节,表示-128~127的整数

    浮点数:存储小数数值,float占4字节,double占8字节,字节多的精确度大

    字符:char用来存储'A'、'b'、'林'等字符符号,占2字节

    布尔:boolean只有两个值true和false,无法与其他类型做运算

  • 通过API得知各种类型可存储数值的范围

      public class Range {
      public static void main(String[] args) {
      	//byte、short、int、long范围
      	System.out.printf("%d~%d%n",Byte.MIN_VALUE,Byte.MAX_VALUE);
      	System.out.printf("%d~%d%n",Short.MIN_VALUE,Short.MAX_VALUE);
      	System.out.printf("%d~%d%n",Integer.MIN_VALUE,Integer.MAX_VALUE);
      	System.out.printf("%d~%d%n",Long.MIN_VALUE,Long.MAX_VALUE);
      	//float、double精度范围
      	System.out.printf("%d~%d%n",Float.MIN_EXPONENT,Float.MAX_EXPONENT);
      	System.out.printf("%d~%d%n",Double.MIN_EXPONENT,Double.MAX_EXPONENT);
      	//char可表示的Unicode范围
      	System.out.printf("%h~%h%n",Character.MIN_VALUE,Character.MAX_VALUE);
      	//boolean的两个值
      	System.out.printf("%b~%b%n",Boolean.TRUE,Boolean.FALSE);
      }
    

    }

  • 注释:单行注释(“//”之后的文字)、多行注释(“/”与“/”之间的文字)

  • 使用System.out.println(),在标准输出中显示文字后换行。而使用System.out.print()则输出文字后不换行

  • %d%h%b等是格式控制符

  • 变量:将不确定的数据进行存储

    格式:数据类型 变量名=初始化值。变量名不可以使用数字开头及特殊字符,也不可以与关键字同名,通常为xxxYyyZzz形式(驼峰式)

  • 进制:十六进制以0x开头,八进制以0开头,二进制以0b开头,十进制直接书写

  • 转义符:“\”改变其后面第一个字符的含义。\n换行,\b退格,\r按下回车键,\t制表符等。

  • 运算符:

    算数运算符:+、-、*、/、%

    比较、条件运算符:>、>=、<、<=、==、!=,结果为true或false。

      public class Comparison {
      	public static void main(String[] args){
      		System.out.printf("10>5结果%b%n",10>5);
      		System.out.printf("10>=5结果%b%n",10>=5);
      		System.out.printf("10<5结果%b%n",10<5);
      		System.out.printf("10<=5结果%b%n",10<=5);
      		System.out.printf("10==5结果%b%n",10==5);
      		System.out.printf("10!=5结果%b%n",10!=5);
      	}
      }
    

**三元条件运算符:**`条件式?ture返回值:false返回值`

**逻辑运算符:**&&、||、!。对&&来说,当左侧为false时直接返回false;对||来说,当左侧为true直接返回true

**位运算符:**&、|、!、~、>>、<<、>>>逐位运算

	public class Bitwise {
		public static void main(String[] args){
			System.out.println("AND 运算:");
			System.out.printf("0 AND 0 %5d%n", 0&0);
			System.out.printf("0 AND 1 %5d%n", 0&1);
			System.out.printf("1 AND 0 %5d%n", 1&0);
			System.out.printf("1 AND 1 %5d%n", 1&1);
	
			System.out.println("\nOR 运算:");
			System.out.printf("0 OR 0 %6d%n", 0|0);
			System.out.printf("0 OR 1 %6d%n", 0|1);
			System.out.printf("1 OR 0 %6d%n", 1|0);
			System.out.printf("1 OR 1 %6d%n", 1|1);
	
			System.out.println("\nXOR 运算:");
			System.out.printf("0 XOR 0 %5d%n", 0^0);
			System.out.printf("0 XOR 1 %5d%n", 0^1);
			System.out.printf("1 XOR 0 %5d%n", 1^0);
			System.out.printf("1 XOR 1 %5d%n", 1^1);
		}
	}

`<<`向左移动,右边补0,相当于乘2的幂次,`>>`向右移动,左边补和原来最左边相同的数,`>>>`向右移动,左边补0,相当于除2的幂次

	public class Shift {
		public static void main(String[] args){
			int num=1;  
			System.out.printf("2 的 0 次方: %d%n", num);
			System.out.printf("2 的 1 次方: %d%n", num<<1);
			System.out.printf("2 的 2 次方: %d%n", num<<2);
			System.out.printf("2 的 3 次方: %d%n", num<<3);
		}
	}

**自增、自减:**++、--

**指定运算符:**a+=b即a=a+b,以此类推。
  • 类型转换:Java中默认整型为int,小数位double

    强制转换:float PI=3.14ffloat PI=(float)3.14

    自动转换:运算时以长度最长的类型为主,其它数值自动提升

  • if...else

      (1)	if(条件式){
      		描述句;
      	}
      	else {
      		描述句;
      	}
      (2)	if(条件式1){
      		描述句;
      	}
      	else if(条件式2) {
      		描述句;
      	}
      	else {
      		描述句;
      	}
    

    判断数字奇偶性

      public class Odd {
      	public static void main(String[] args){
      		int input = 10; 
      		int remain = input % 2;
      		if(remain == 1){//余数为1就是奇数
      			System.out.printf("%d 为奇数%n", input);
      		}
      		else{
      			System.out.printf("%d 为偶数%n", input);
      		}
      	}
      }
    

处理学生成绩等级

	public class Level {
		public static void main(String[] args){
			int score=88;
			char level;
			if(score>=90){
				level='A';
			}
			else if(score>=80&&score<90){
				level='B';
			}
			else if(score>=70&&score<80){
				level='C';
			}
			else if(score>=60&&score<70){
				level='D';
			}
			else{
				level='E';
			}
			System.out.printf("得分等级:%c%n", level);
		}
	}

  • switch

      switch(变量或表达式){
      	case 取值1:
      		描述句;
      		break;
      	case 取值2:
      		描述句;
      		break;
      	...	
      	default:
      		描述句;
      }
    

    处理学生成绩等级

      public class Level2 {
      	public static void main(String[] args){
      		int score = 88; 
      		int q = score / 10;
      		char level;
      		switch(q){
      		    case 10:
      		    case 9:
      		        level = 'A';
      		        break;
      		    case 8:
      		        level = 'B';
      		        break;
      		    case 7:
      		        level = 'C';
      		        break;
      		    case 6:
      		        level = 'D';
      		        break;
      		    default:
      		        level = 'E';
      
      		}
      		System.out.printf("得分等级:%c%n", level);
      	}
      }
    

  • for

      for(初始化表达式;循环条件表达式;循环后操作表达式){
      	描述句;
      }
    

    显示从1到10

      public class OneToTen {
      	public static void main(String[] args){
      		for(int i=1;i<=10;i++){
      			System.out.println(i);
      		}
      	}
      }
    

显示九九乘法表

	public class NineNineTable {
		public static void main(String[] args){
			for(int j=1; j < 10; j++){
				for(int i=2; i < 10; i++){
					System.out.printf("%d*%d=%2d  ", i,j,i*j);
				 }
				System.out.println();
			}
		}
	}

  • while

      (1)	while(条件式){
      		描述句;
      	}
      (2)	do{
      		描述句;
      	}while(条件式)
    

    书上示例,看谁最久不撞到5

      public class RandomStop {
      	public static void main(String[] args){
      		//直接执行循环
      		while(true){
      			int number=(int)(Math.random()*10);//产生0~9的随机数
      			System.out.println(number);
      			if(number==5){
      				System.out.println("I hit 5...Orz");
      				break;//遇到5就离开循环
      			}
      		}
      	}
      }
    

用do...while改写

	public class RandomStop2 {
		public static void main(String[] args){
			int number;
			do{
				number=(int)(Math.random()*10);//产生0~9的随机数
				System.out.println(number);
			}while(number!=5);
			System.out.println("I hit 5...Orz");
		}
	}

  • break离开当前区块,并执行区块后下一描述句。continue略过之后描述句,并回到区块开头进行下一次循环。

教材学习中的问题和解决过程

问题:使用System.out.printf()System.out.print()System.out.println()有什么区别?

解决:printf是按照格式输出,print是单纯的输出,println是在输出后换行。

代码调试中的问题和解决过程

问题:使用IDE运行第一个程序时没有问题,运行第二个程序的时候控制台仍旧显示的是第一个程序的结果,怎么换到第二个上面?

解决:由于在新建第二个程序时还在第一个程序的页面,工作空间中只是位置还在第一个程序的src中,忘记调过来了,鼠标点在第二个程序的位置就好了。

其他(感悟、思考等,可选)

Java中的语法规则与C语言大同小异,基本没有太大出入,回顾、复习C语言的知识有助于我们更好地掌握Java。刚使用IDE编程时对新建、运行的方法比较生疏,但是多用几次就好了,熟能生巧。编写Java程序也是这样,多看多写才能掌握的更好。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 150/150 2/2 15/15 学会搭建Java环境,学会写Hello World小程序
第二周 500/500 3/3 35/35 掌握IDE的使用方法,学会Java的基本语法规则

参考资料

posted @ 2016-03-12 21:28  20145219宋歌  阅读(188)  评论(6编辑  收藏  举报