• java第二节 基本数据类型


    class Lesson2
    {
    	public static void main(String[] args)
    	{
    		 //-----------------------------------
    		 //@Date: 2013-06-30
    
    		 //System.out.println("hello world");
    		 //System.out.println("你好java"); 
    		 
    		 //java中的常量
    		 //整型常量
    
    
    		 //常量的数据类型
    
    		 //常量的概念与作用
             //int x=0, y;
    		 //int x, y; //必须先初始化变量才能对变量进行操作
    		 //y = x+3;
    		 //System.out.println("合值为:"+y);
    
    		 /*
    		 数据类型
    		        ---基本数据类型
    				          ----数值型
    						       -----整型类型(byte,short,int,long)
    							   -----浮点类型(float,double)
                              -----字符型(char)
    						  -----布尔型(boolean)
    
                    ----引用数据类型
    				          -----类(class)
    						  -----接口(interface)
    						  -----数组
             */
    
    		 //char ch = 'x'; //字符
    		 //System.out.println(ch);
    
    		 //类型转化
    		 //自动类型转换
    		 //
    
    		 //byte b = 129; //byte类型的最大值是127
    		 
    		 //float f=3.5;报错
    		 //原因为我们直接在程序中使用了3.5,因为3.5是一个double类型的浮点数
    		 //double在内存中是站8个字节,但float 只站四个字节
    		 //float f = 3.5f;
    		 //System.out.println(f);
    		 
    		 //byte b = 122;
    		 //int x = b;
    		 //System.out.println(x); //自动类型转换(也叫陷式类型转换)
    
    		 //byte b = 122;
    		 //int x = 266;
    		 //b = x;  失败
    		 //b = (byte)x; //强制类型转换(也叫显示类型转换)
    		 //System.out.println("x:"+b); //数据位数的丢失 打印为10
    		 //类型转换的原理,及什么时候要用强制类型转换
    
    		 //被赋值的类型的字节大于当前赋值的字节的变量,可以用隐示转换
    		 //被赋值的类型的字节小于当前赋值的字节的变量,可用显示转换
             
    		 //表达式的数据类型自动提升
    		 //所有的byte型,short型和char的值将被提升为int类型
    		 //如果一个操作类型是long型,计算结果就是Long型
    		 //如果一个操作类型是float型,计算结果就是float型
    		 //如果一个操作类型是double型,计算结果就是double型
    
             //System.out.println('a'+1);    //这个是一个字符加1
    		 //这里直接把字符转换为十进制的整数,然后加1
    		 //System.out.println(""+'a'+1); //这里是一个空字符串加一个字符a然后加1
    		 //这里是将a与空字符串进行相加,然后得出字符串,字符串加1,进行字符相加操作
    		 //区别暂时不知道
    
    
    		 //byte b = 3;
    		 //b = b - 1; //这里的1为int类型,所以byte减去int类型提示错误
    		 //上面这种自我想法是错误
    
    		 //b转换为一个int类型,然后去减1, 为一个int类型的2. 
    		 //所以不能将一个int类型的值赋值给byte值
    		 //int bb = b -1;
    		 //System.out.println(bb);
    
    		 //System.out.println('a'+1); //a会被提升为整数类型,然后进行相加
    		 
    		 //System.out.println(""+'a'+1);//表达式中如果有字符串与其它数值相加,
    		 //其实就是与其它变量进行相连
    
    		
    		//复合语句,也就是变量的生存周期
    		/*{
    		 int x = 3;
    		 System.out.println(x);
    		}
    		System.out.println(x);*/
            
    		//这是在C语言中可以这样使用
    		//但在java中不允许这样使用
    		/*int x = 9;
    		{
    			 int x = 3;
    			 System.out.println(x);
    		}
    		System.out.println(x);*/
    		//变量的生存周期与作用域
    		//变量要先定义,后使用,但也不是在变量定义后的语句一直都能使用
    		//前面定义的变量,我们可以用大括号将多个语句包起来形成一个复合语句,变量只能在定义它的复合语句中使用
            /*int x = 9;
    		{
    			 System.out.println(x);
    		}*/
    		//函数
    		//函数(子程序)的概念与作用
    		//定义一个函数的格式
    		//编写打印三个矩形的程序
    		//如果理解函数返回类型为void的情况
    		//void表示无返回值
    
    
    		/*for(int i=0; i<10; i++)
    		{
    		    System.out.println(i+"
    ");
    		}*/
    		/*for(int i=0; i<3; i++)
    		{
    		     for(int j=0; j<5; j++)
    			 {
    			     System.out.print('*');
    			 }
    			 System.out.println();
    		}
    
    		for(int i=0; i<2; i++)
    		{
    		     for(int j=0; j<3; j++)
    			 {
    			     System.out.print('*');
    			 }
    			 System.out.println();
    		}
    
    		for(int i=0; i<6; i++)
    		{
    		     for(int j=0; j<10; j++)
    			 {
    			     System.out.print('*');
    			 }
    			 System.out.println();
    		}*/
    
    		//MyPrint(3,5);
    		//MyPrint(4,3);
    		//MyPrint(10,10);
    		//System.out.println("3*5="+getArea(3,5));
    
    		//调数的调用
    		//函数调用的格式
    		//在函数中使用return提前返回
    		//函数调用的过程分析
    
    		//函数重载
    		//函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可
            
    		/*int isum =0;
    		double fsum;
    
    		isum = add(5,5);
    		System.out.println("isum:"+isum);
    
    		isum = add(5,5,5);
            System.out.println("isum:"+isum);
    
    		fsum = add(3.2, 5.2);
            System.out.println("fsum:"+fsum);*/
    
    
    		/*System.out.println(Float.intBitsToFloat(0x7f800000));//正则无穷大
    
    		System.out.println(Float.intBitsToFloat(0x7f800001));//比正则无穷大还要大的值,就不是数字了
    
    
            //浮点数表示的最大值
    		System.out.println(Float.intBitsToFloat(0x7f7fffff));
    
    		//浮点数表示的最小值
            System.out.println(Float.intBitsToFloat(0x00000001));*/
    
    
    		//数组 
    		//1 为什么时会有数组?
    		//2 堆内存和栈内存
    		//3 int[] x; x= new int[100]的内存状态变化情况
    
    
    
    
    
    
    
    
    
    
    	}
    
    
    	public static int add(int x, int y)
    	{
    	      return x+y;
    	}
    
    	public static int add(int x, int y, int z)
    	{
    	      return x+y+z;
    	}
    
    	public static double add(double x, double y)
    	{
    	      return x + y;
    	}
    
    
    
    
    
    
        public static int getArea(int x, int y)
    	{
    	     return x * y;
    	}
    
    
    
    	public static void MyPrint(int h, int w)
    	{
    	     for(int i=0; i<h; i++)
    		 {
    		      for(int j=0; j<w; j++)
    			  {
    			      System.out.print('*');
    			  }
    			  System.out.println();
    			  //return;
    		 }
    	}
    }
    

      

    class Lesson21
    {
    
    	public static void main(String[] args)
    	{
    	     //int x = 5, y;
    		 //y = x/ 2;
    		 //System.out.println(y);
    
    		 //float f = z / 2;
    		 //System.out.println(f); //2.0
    
    		 //float f = (float)x / 2;
    		 //System.out.println(f); //2.5
    
    
    
    		 //int x = 5, y;
    		 //y = -x % 2;
    		 //System.out.println(y); //-1
    
    		 //y = x % 2;
    		 //System.out.println(y);//取幕运算时,当取幕为负数时,负号可以不计
    
    
    		 //int x = 10;
    		 //int y = (x+5)/6; //这里加五也是正确的,因为只要有一个就是一页,
    		 //int y = (x+5)/6;//还真得用这个办法,不然想不到办法
             //System.out.println(y);
    
    		 /*int x = 30;
    		 int y = (x%6) >=1 ? 1 : 0;
    		 int n = (x/6) + y;
    		 System.out.println(n);*/
    
    
    		
    		 /*for(int x=0; x<=9; x++)
    		 {
    		      System.out.println(x);
    		 }*/
    
    
    
    		 //int i = 3 % 1;//0
    		 //int j = 9 % 4;//1
    		 //System.out.println("i:"+i);
    		 //System.out.println("j:"+j);
    
             /*int x = 0;
    		 while(true)
    		 {
    		      x = (x+1) % 10;
    			  System.out.println("x:"+x);
    		 }*/
    
    		 //赋值运算符
    		 // = 
    		 // +=
    		 // -=
    		 // *=
    		 // /=
    		 // %=
    
    		 //int x = 6;
    		 //x += 5;
    		 //System.out.println("x:"+x);
    
    		 //比较运算符
    		 /*
    		 运算符
    		 ==
    		 !=
    		 <
    		 <=
    		 >
    		 >=
    		 instanceof 检查是否是类的对象
    
    
    		 逻辑运算符
    
    		 &   AND (与)
    		 !   OR  (或)
    		 ^   XOR (异或)  如果两个表达式的如果都为false 或者都为true,那么结果为false ,如果一个为false一个为true,那么为true
    		 !   NOT (非)
    		 &&  AND (短路)
    		 ||  OR  (短路)
    
    		 //注1: 逻辑运算符用于对boolean 型结果的表达式进行运算,运算的结果都是boolean型
    		 //注2: "&"与"&&"的区别在于,如果使用前者连接,那么无论任何情况,"&"两边的表达式都会参与计算
    		 //如果使用后者连接,当"&&"的左边为false,则将不会计算其右边的表达式,"|"与"||"的区别与"&"和"&&"的区别一样
    		 */
    
    		 /*int x=1, y=10;
    		 if(x <=1 & y>=10)
    		 {
    		     System.out.println("x <=1 & y>=10");
    		 }
    		 if(x <=1 && y>=10)
    		 {
    		     System.out.println("x <=1 && y>=10");
    		 }
    		 if( x<=1 ^ y>=15)
    		 {
    		     System.out.println("x<=1 ^ y>=15");
    		 }*/
    
    		 /*
    		 位运算符
    		 任何信息在计算机中都是以二进制的形式保存的,& | 除了可以作为逻辑运算符,也可以做为位算符
    		 它们对两个操作数中的每一个二进制位都进行位运算
    		  1 只有参加运算的两位都为1,&运算的结果才为1,否则就为0
    		  2 只有参加运算的两位都为0,|运算的结果才为0,否则就为1
    		  3 只有参加运算的两位不同,^运算的结果为1,否则就为0
    
    		  我们可以对数据按二进制位进行移动操作,java的移位运算符有三种
    		  1 << 左移
    		  2 >> 右移
    		  3 >>> 无符号右移
    		 */
    		 //int x = 0x80000000;
    		 //int y = x >>1;
    		 //System.out.println("0x80000000="+Integer.toHexString(y));
    		 //y = x >>>1;
    		 //System.out.println("0x80000000="+Integer.toHexString(y));
    
    		 /*
    		 移位运算的注意事项及小技巧
    		 1 移位运算符适用数据类型为byte, short, char, int, long.
             2 对低对int型的操作数将先自动转换为int型再移位
    		 3 对于int型整数移位a>>b, 系统先将b对32取模,取到的结果才是真正移位的位数,例如
    		   a>>33和a>>1结果是一样的,a>>32的结果还是a原来的数字
             4 对于long型整数移位时a>>b,则是先将移位位数b对64取模
    		 5 移位不会改变变量本身的值,如a>>1, 在一行语句中单独存在,毫无意义
    		 6 x>>1 的结果和x/2的结果是一样的,x<<2和x*4的结果也是一样的,总之,一个数左移n位,就是等于这个数乖以2的n次方
    		   一个数右移n位,就是等于这个数除以2的n次方,
    		   请思考:如何用程序实现求2的X次方,答案: y = 1 << x;
    
    		 */
    		 /*int x = 10;
    		 int y = x >> 2; //10 / 4
    		 System.out.println("y:"+y); //2
    
    		 int yy = x << 2;//10 * 4
    		 System.out.println("yy:"+yy); //40
    		 //00000010
    		 //00001000*/
    
    		 //运算符的优先级
    
    
    		 //程序的流程控制
    		 //顺序结构
    		 //选择结构
    		 //if 语句的选择结构
    
    
    
    		 //循环结构
    		 //顾名思义,顺序结构就是程序从上到下一行一行执行的结构,中间没有判断和跳转,直到程序结束
    	}
    };
    

      

    class Lesson22
    {
         public static void main(String [] args)
    	 {
    	     /*int x = 2;
    		 if(x < 3)
    		 {
    		     System.out.println("x小于3");
    		 }else{
    		     System.out.println("x大于3");
    		 }*/
    		 
    		 /*
    		 switch语句的选择结构
    		 Switch(表达式)
    		 {
    		     case 常量表达式1:语句1;
    			 case 常量表达式2:语句2;
    			 default: 语句n;
    		 }
    		 1 default语句是可选的,它接受除上面接受值的其他值,通俗的讲,就是准也不要都给他
             2 case后面可以跟多个语句,这些语句可以不用大括号括起来
    		 3 switch语句判断条件可以接受int,byte,char,short型,不可以接受其他类型
    		 4 一旦碰到第一次case,就会开始顺序执行以后所有的程序代码,而不穦后面的case条件是否,
    		   后面的case条件下的代码都会被执行,直到碰到break语句为止,我们可以利用这个特点来用同一段语句处理多个case条件		 
    		 */
    
    		 //while循环语句
    		 //do-while循环语句
    		 /*int x = 1;
    		 do
    		 {
    			 System.out.println("x:"+x);
    			 x++;
    		 }
    		 while (x <=10);*/
    
    		 //int x=0;
    
    		 /*try{
    		    x = System.in.read();		 
    		 }catch(Exception e){}
    
    		 while(x!='q')
    		 {
                 System.out.println((char)x);
    			 try{
    				x = System.in.read();		 
    			 }catch(Exception e){}
    		 }*/
    
    
    		 /*do
    		 {
    			 System.out.println("请输入值:");
    			 try{
    			     x = System.in.read();
    			 }catch(Exception e){}
    			 System.out.println("输入的值为:"+(char)x);
    		 }
    		 while ((char)x !='q');*/
    
    
    		 //for循环语句
    		 //break与continue语句
    		 
    
    		 //变量的字节大小及有效取值范围
    
    	 }
    };
    

      

    class Lesson23
    {
    		//数组 
    		//1 为什么时会有数组?
    		//2 堆内存和栈内存
    		//3 int[] x; x= new int[100]的内存状态变化情况
    		public static void main(String[] args)
    		{
    		    /*int x[] = new int[100];
    			int sum=0;
    			for(int i=1; i<=100; i++)
    			{
    			     x[i-1] = i;
    				 sum += x[i-1];
    			}
    			System.out.println("sum:"+sum);*/
    
    			//栈内存,只有在此函数运行时存在此函数中定义的变量,某个函数在栈空间
    
    			//堆内存 
    
    			//数组
    			//静态数组
    			//int ia[] = {1,2,3,4};
    			
    			//int [] ib = new int[]{3,4,5};
    
    			//int a[5] //声明数组时,不能指定其长度,编译时将出错
    
    			//使用数组时要注意的问题
    			//空指针导常
    			//如何得到数组长度
    			//数组越界异常
    
    
    			//多维数组
    			  //如何理解多维数组,类似我们的棋盘
    			  //java中并没有真正的多维数组,只有数组的数组,java中多维数组不一定是规则的矩阵形式
    			  //定义一个数组
    
    			  /*int[][] xx;
    			  xx = new int[3][];
    			  x[0] = new int[3];
    			  x[1] = new int[2];
    			  x[2] = new int[1];*/
    
    			  //多维数组中元素的引用方式,如x[1][2]
    			  //规则矩阵数组可以在一条语句中产生,如: int xx[][] = new int[2][3];
    			  //多维数组的静态初始化,如 int xx[][]={{3,3,4},{1,2},{1}};
    
    			  /*int xx[][] = {{1,2,3},{1,2},{2}};
    			  for(int i=0; i<xx.length; i++)
    			  {
    			      for(int j=0; j<xx[i].length; j++)
    				  {
    				     System.out.println("xx["+i+"]["+j+"]:"+xx[i][j]);
    				  }
    			  }*/
    
    			  //与数组操作相关的函数
    			  //使用System.arraycopy()函数拷贝数组
    			  //用Arrays.sort来排序数组
    
    			  //int [] ia = {3,2,5,6};
    			  
    			  int[] x;
    			  x = new int[]{3,2,5,6};
    			  
    			  /*java.util.Arrays.sort(ia);
    			  for(int i=0; i<ia.length; i++)
    			  {
    			      System.out.println("ia["+i+"]:"+ia[i]);
    			  }*/
    
    
    			  int [] tia = new int[10];
    			  System.arraycopy(x,0,tia,0,2);
    			  for(int i=0; i<tia.length; i++)
    			  {
    			      System.out.println("tia["+i+"]:"+tia[i]);
    			  }
    		}
    };
    

      

  • 相关阅读:
    自定义promise的实现
    数据双向邦定1
    上线遇到的bug
    UEGrids.js
    staticFileServer.js
    Promise
    响应式布局实例
    悬浮框的兼容性
    Fiddler Web Debugger
    js根据当前日期提前N天或推后N天的方法
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/3190147.html
Copyright © 2020-2023  润新知