⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 day02.txt

📁 达内科技上课的 java学习笔记 分为18天学完
💻 TXT
字号:
			Core Java(day02)   2007-12-4    --- 李艳  

1、变量
	
	成员变量:声明在类体内的变量都是成员变量。例:类的属性
		  (1)成员变量有默认的初始值,声明后就可使用

	  成员变量默认值列表:

		byte short  int  long  float  double    char    boolean     All reference types  

		0     0     0     0L    0.0f   0.0d  ‘\u0000’  false          null

		\u0000是空格

	局部变量:在方法内声明的变量,既凡是不在类体内声明的变量都是局部变量
		  (1)一定要先赋值后使用,即必须由程序员进行显示初始化
		  (2)作用范围:从定义开始到定义它的代码块结束  
		  (3)在重合范围不允许两个局部变量命名冲突

		    默认值         使用范围          命名冲突

       成员变量  系统赋初始值   本类的内部使用   允许成员变量和局部变量发生命名冲突,在命名冲突的时候变量的值-->局部优先

       局部变量  先赋值后使用   定义他的代码块   同范围内不允许两个局部变量发生命名冲突
	
2、值传递
	
	基本类型传值,引用类型传地址。

3、运算符:java的运算符的优先级和结合性和c++相同

	计算机采用的是补码,既取反加1。符点数是不能进行移位运算的。
	
	有符号右移:>>=  前面是零补零,前面是一补一;   右移一位比除以2效率高
			正数移完后还是正数,负数移完后还是负数

			所有的非长整型,都是先取32的余数,再移位
			所有长整型的数据都是先取64的余数,再移位

			负数用二进制表示是取反加1
			对于移动负数位都是+32再移位

			右移一位等于除以2,左移一位等于乘以2
			例:12>>1等价于 12/2的1次方--->6
			    12>>33等价于12/2的(33%32)次方---->12/2的一次方--->6
			    -12>>2等价于-12/2的2次方---->-3
			    -12>>66等价于-12/2的(66%32)---->-12/2的2次方--->-3
			    
  	无符号右移:>>>=  不管是正数还是负数,移完后都是正数
	    	>>=和>>>=对于负数不一样
      		正数:右移n位等于除以2的n次方
      		负数:变成正数。

	&&   短路与,前面为假,表达式为假,后面的操作不会进行,& 非短路运算符,会对所有条件进行判断。
   		例:  int a = 4;
         		if(a<3&(b=a)==0)   b赋值
         		if(a<3&&(b=a)==0)  b不赋值  

  	||   短路或,前面为真,表达式为真,后面的操作不会进行,| 会对所有条件进行判断。

   	instanceof,是用于判断一个对象是否属于某个类型

   	java中的求余运算符“%”可以对两个实型变量求余 5%2=1
	
4、字符串连接:

	两个操作的对象都是数字时,是加法
	若有一个是字符串,就是字符中连接
	例:String str="abc";
	    4+str=4abc
	    4+str+5=4abc5
	    4+5+str=9abc
	    s+4+5=abc45

5、流程控制
	
	(1)控制流
    		if()
    		if()…else
    		if()…else if()…else

    		注意:else只是和其上面的同层的最近的if()来配对。

	(2)switch(s){
        	case 'a':……break;
         	case 1:……break;
         	default:....break;---default后面的break可有可无
     	     }
    		注意:switch()内数据类型为byte short char int和枚举类型,只有以上四种类型的才可以在switch()中使用。
          		case块中不加break时顺序执行下面的语句。 
		switch只能用于有限的条件。能用switch写的分支语句都能用if--else来写,故switch不常用  
          
	(3)循环语句
		
		每一种循环都有的四要素:

			条件初始化
			条件定义
			条件变量的变化
			循环体

   		for(int i=0;i<n;i++){}  ---- 知道循环次数时最好用for循环

		不知道次数只知道循环条件最好用以下两个
   		while(){}               ---- 循环0或多次
   		do{} while();-----------注意加分号  循环1次或多次 	


6、数组
	(1)数组的定义

		数组是内存中的一块连续的存储空间
  		数组是一次性定义多个相同类型的变量  
  
  	(2)定义一个数组:

  		int[] a; //定义一个数组,变量名就是指向数组首地址的指针
  		a=new int[10]; //为数组分配空间,分配了长度为10,int类型的数组空间,把首地址赋值给a,数组长度一旦确定不能改变

		一个数组在java中就是一个对象,数组是一个没有方法,只有属性的对象。
  		a.length;  //得到数组的长度    
		
		访问数组元素:

			for(int i=0;i<a.length;i++){
				System.out.println(a[i]);
			}

  		数组元素有默认值:默认值是各式各样的0

		数组元素默认值规则:
			int           0
			long          0l
			float         0f
			double        0d
			boolean       false
			对象数组      null(空指针)
  
  	(3)初始化、创建、和声明在同一时间 
      		int[] i = {0,1};   //显示初始化
      		int[] i = new int[]{0,1};  //注意:这样显示的初始化的时候,new int[] 中括号中必须是空的,不能填数字
      		Car[] c = {new Car(),new Car()}; 

	(4)二维数组:

		定义二维数组:int[][] a=new int[3][4]  3行4列

		java中的二维数组其实是一维数组,一维数组的元素又是个一维数组
  
   		1) 有效定义

      			int[][] a = new int[2][3]; (同时给定一维,二维的空间)

			遍历二维数组:for(int i=0;i<a.length;i++){
					for(int j=0;j<a[i].length;j++){
						System.out.print(a[i][j]+" ");
					}
					System.out.println();
				      }

      			int[][] b = new int[3][]; (给定一维的空间,二维空间待定,不规则的二维数组,只有java中有,C++没有)
     			    b[0] = new int[2];
			    b[1] = new int[4]; 
			    b[2] = new int[3];
	    		
   		2) 无效定义

     			int[][] i1 = new int[][3]; //不能不指定行数

		3) 显示初始化二维数组
	
			int[][] c={{1,2,3,4}{5,6,7,8}{9,8,7,6}};

  	 	3) 数组长度

      			int[] b = new int[5]; 
      			int len = b.length;  //len = 5;
       
      			int[][] a = new int[4][6]; 
      			len = a.length;      //len = 4; 
      			len = a[0].length;   //len = 6;
	(5)数组拷贝
  		System.arrayCopy(Object src, int srcPos, Object dest, int destPos, int length);
  		src源数组,srcPos从第几个位置开始拷贝(数组下标,从0开始),dest目标数组,destPos目标数组放置的起始位置,length,表示要拷贝的长度。

	 (6)数组排序

		类库中用 Arrays.sort(数组名);  进行升序排序
		该方法是一个经过调优的快速排序法

	作业:写一个模拟彩票系统的随机数程序(从1--33里选),需要6个数
	      java.Math.random();  //取值范围是[0,1)这个区间的double类型数据
	      要想取[1--33]的随机数可以:int d=(int)(33*Math.random()+1);
	      问题就是如何过滤重复,检验代码写的是否正确可以把33改成6看是否有重复数据就知道了
	      
			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -