20160711

来源:互联网 发布:雅思听力技巧 知乎 编辑:程序博客网 时间:2024/06/05 11:46
/**1.整数常量2.小数常量3.布尔型常量4.字符常量5.字符串常量6.null常量*/class 笔记{public static void main(String[]agrs){//整数常量System.out.println(100);//小数常量System.out.println(200.5);//布尔型常量System.out.println(true);System.out.println(false);//字符类型常量System.out.println('A');//System.out.println('AB');错误的字符演示    //进制 二,八 用0开头,十,十六 用0x开头/* 电报:电子信号,电子状态开/关,01010101(二进制),多少个电状态表示一个数据:8个.这是国际标准组织规定,USA. 后来出现数字表示值,0和1表示电子的开和关状态. 每个信号就是一个位bit,8bit=1byte,1k=1024byte,1M=1024k,1G=1024M,1T=1024G 八进制:是将二进制从右到左每三位抽出来就是一个数据,不够三位,前面补零,最后再将得出的结果从左到右组成八进制 001 010 101      1  2   5     进制越高,数据越短;数据越短,人为读写越方便.*/      //十进制  System.out.println(60);  //八进制  System.out.println(060);  //十六进制  System.out.println(0x60);      //八进制转换为十进制  System.out.println(074);  //十六进制转换为十进制  System.out.println(0x3c);  //二进制转换为十进制   这个不对  System.out.println(111100);  /*  任意进制转换为十进制  123  系数:每一位上的数值就是系数,  权值:数据从右到左边索引值,以0开始到第n-1个  基数:x进制的基数就是x  任意进制转换为十进制的规则:系数*基数^权值 相加  二进制转换为十进制: 111100  1*2^5+1*2^4+1*2^3+1*2^2+0*2^1+0*2^0=32+16+8+4+0+0=60      八进制转换为十进制: 074     0*8^2+7*8^1+4*8^0=0+56+4=60  十六进制转换为十进制:0x3C   3*16^1+12*16^0=48+12=60  1 2 3 4 5 6 7 8 9 A  B  C  D  E  F  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15    */  /* 十进制转换为任意进制 12345 规律:数值除以基数直到商为0,最后将余数反转输出   */     /*   二进制转换为八进制:将二进制从右到左每三位组合成一个十进制数据   111100   111 100    7   4 *//*    变量:指在一定范围内可以改变的量.变量要求:数据类型必须定下  ,字符串不可以被赋值  变量类型怎么使用这个变量:给这个变量取个名字             变量名称变量类型 变量名称=变量值;变量作用范围:一对{}之间  定义一个初始值*//*    基本数据类型:0111 1111 以0开头,正数  127  正数的补码是其本身1111 1111 以1开头,负数  -128 负数的补码:符号位为1,其余位为该数绝对值的原码按位取反,然后加1                                        所以最小数 的补码形式为1000 0000;所以取反后加1,即为0111 1111+1=1000 0000=128,又因为是负数,所以是-128    可以节省更多的内存   */    //byte类型//格式: 变量类型  变量名称 = 变量值byte by=127;//申明变量的第一种方式(赋值)(等于==)//byte by=128System.out.println(by);//申明变量的第二种方式byte by2;by2=1;//使用前赋值System.out.println(by2);     by2=100;System.out.println(by2);//short类型short s=1;System.out.println(s);//int类型int i=250;System.out.println(i);//long类型  在数据后面加上大写的L或llong l=12345678901234L;System.out.println(l);//char类型char c='0';System.out.println(c);//boolean类型boolean b=true;//falseSystem.out.println(b);//错误的变量申明方式,变量名不能被重复//int b=250;//System.out.println(b);  笔记.java:140: 错误: 已在方法 main(String[])中定义了变量 b                                         //int b=250;                                           //  ^                                            // 1 个错误    //float 在小数点后加F或ffloat f=12.34F;System.out.println(f);//doubledouble d=1234.12341234;System.out.println(d);  /*     public  static void main(String[]agrs)     java当中参与运算的数据必须保持类型一致*/    int i1=4;i1=i1+5;System.out.println(i1);//i1没有问题,正常输出=9      byte by3=3;   int i2=4;   i2=by3+i2;//隐式转换  自动转换   System.out.println(i2);  //大的数据类型转换成小的数据类型  // by3=by3+i2;  //System.out.println(by3);笔记.java:168: 错误: 不兼容的类型: 从int转换到byte可能会有损失    by3=(byte)(by3+i2);//强制类型转换  格式:(转换类型)(被转换的数据)System.out.println(by3);   //boolean类型 不能参与运算   boolean boo=true;   //boo=boo+1;   System.out.println(boo);   //char类型能否参与运算?如果直接输出字符,那么会直接打印出字符   char ch='字';//'A'  System.out.println((char)(ch + 1)); //ASCII码表  'A' = 65  'B' = 66  输出B        扩展:unicode  System.out.println((int)(ch));                                      //输出A  System.out.println(ch);  System.out.println(ch + 1);                                        //输出66  //字符串运算:将新的字符串和旧的字符串连接在一起形成新的字符串  String str="Hello World";  System.out.println(str+10);//Hello World10  System.out.println("5+5="+5+5);//5+5=55   加括号有优先级  System.out.println(5+5+"=5+5");//10=5+5  前面认为是int类型 // 下午开始的(*^__^*) 嘻嘻  //算术运算符  /*         */   //除号.运算取商   int i4=4325;  // i4=i4/1000*1000;//i4=4000 double被转成int类型   i4=(int)(i4*1.0/1000*1000);//得出250?打成i了,是i4!!   System.out.println(i4);//i4=4325   //% 运算取余数   System.out.println(2%3);//2   System.out.println(2%2);//0   System.out.println(3%2);//1   System.out.println(-2%3);//-2   System.out.println(2%-3);//2   /*总结:左边大于右边,结果取左边       左边等于右边,结果取零      左边小于右边,结果取余数      有负数的结果取左边      0%2=0 1%2=1 2%2=0 3%2=1 判断整数是否为基数或偶数   */   /*     ++,--,自增,自减      */   int i5=1,b5;   //i5--;  //i5=0   // i5++;  //i5=2     // System.out.println(i5);     // b5=i5++;//b5=1    b5=++i5;//b5=2   System.out.println(b5);   /*     赋值运算符 = ,+=,-=,*=,%=   */    int i6=3;//是将左边右边的值相加,赋给左边i6+=2;//i6=5 System.out.println(i6);//10=10+1;赋值运算符要求左边一定要是变量short sh=10;sh+=20;//赋值运算符有自动强制转换的功能,如果数据超出类型范围也会报告啊//sh=sh+20;//右边两侧相加会有精度损失//sh=(short)(sh+20);需要换成这个System.out.println(sh);/*  比较运算符      ==,!=,<,>,<=,>=  */    System.out.println("3=3:"+(3==3));//3=3:trueSystem.out.println("3!=3:"+(3!=3));//3!=3:false /*  逻辑运算符  & 与,|或, ^异或,!非,&&与,||或*/int i7=3;System.out.println(i7<4&i7>0);//trueSystem.out.println(i7>4&i7>0);//false/*  & 逻辑运算符  左边  右边  结果    //有假则假                true  true  truetrue  false falsefalse true  false false false false     | 逻辑或运算符 左边  右边  结果    //有真则真                 1     1      1 1     0      1 0     1      1 0     0      0     ^  逻辑异或运算符  左边  右边  结果   //两边相同结果为假,两边不同结果为真                      1     1    0  0     1    1  1     0    1  0     0    0    &&  逻辑与  短路功能 左边  右边  结果    //左边为真,右边进行运算;左边为假,右边不运算,直接返回false                     true  true  true     true  false false     false true  false    //左边反映false,右边不进行运算     false false false   ||   逻辑或  短路功能                      //左边为真值,右边不需要运算,直接返回true;左边为假,才需要运算右边,根据右边真假返回结果                    左边  右边  结果                     1     1      1 1     0      1 0     1      1 0     0      0 *//*条件运算符?格式:(调教表达式)?表达式1:表达式2;     如果条件为true,执行表达式1; 如果条件为false,执行表达式2.*/   int a8=2>1?100:200;   System.out.println(a8);   //复杂条件运算(条件运算嵌套条件运算)   int a9=2>1?(1>2?100:300):200;    System.out.println("A="+a9);//为什么错误?  记住双引号""   /*   位运算符 <<左移,>>右移,>>>无符号右移,~反码,&与运算,|或运算,^异或运算   */       int a10;   // a10=-127>>1;//负数多看看,有问题   //System.out.println(a10);          //将数据转换为二进制,然后再对二进制中的位进行计算,0相当于逻辑中的假,1为真   System.out.println(4&3);//100&011=000="0"   System.out.println(4|3);//   |   =111="7"   System.out.println(4^3);//   ^   =111="7"      //    int a = 3;      //  int b11= (a--)<<a;            //3<<2=12   后面的a已经减过      // System.out.println(b11);             /*     >>位右移运算 00000000 00000000 00000000 00001000     =8         00000000 00000000 00000000 00000010(00) =2          总结:数据/2^右移数 <<位左移运算 00000000 00000000 00000000 00000011     =3 (00)00000000 00000000 00000000 00001100     =12     总结:数据*2^左移数   */         System.out.println(8>>2);    System.out.println(3<<2);//这个太简单,需要去扩展一下,负数问题?/*  程序流程控制            判断,选择,循环if语句三种格式:1.if(条件表达式){  执行语句;}说明:如果条件表达式返回true那么执行if中的语句,如果返回false则不执行if里面的语句总结:1.不管条件表达式是简单但还是复杂,返回的都是布尔类型的值     2.if条件表达式后面不能有;,错误的格式 3.{}可以不写,但是前提条件是if执行语句只有一行,建议都使用[]这种写法*/int i11=5;if(i11>0){    System.out.println("i大于0");}        if(i11>10){    System.out.println("i大于10");}        if(i11>0&i11<10){   System.out.println("i大于0且小于10");}if(i11!=5);{//多了一个;,就是一个空的if,没有执行语句体     System.out.println("i不等于5");}        if(i11>10)System.out.println("i小于10,嘿嘿1");//这样就是不执行第一句   System.out.println("i小于10,嘿嘿2");          System.out.println("i小于10,嘿嘿3");         System.out.println("i小于10,嘿嘿4");        } {byte a1=3,a2=4,a;            //需要"标识符",忘加{}     a=(byte)(a1+a2);//a=a1+a2;                //两个byte类型相加和默认为int  System.out.println(a);      }}
<pre name="code" class="java">class TestDemon{public static void main(String[]agrs){  byte a1=3,a2=4,a; a=(byte)(a1+a2);//a=a1+a2;                //两个byte类型相加和默认为int  System.out.println(a);               //在java中,类型为byte,short,char类型的变量在运算的时候会自动转为int类型}}


<pre name="code" class="java">class MoveDemon{public static void main(String[]agrs){ int a10;    a10=(-33)>>>5;//负数多看看,有问题   System.out.println(a10);       }}/*Java中,>>、>>>都是在数字的二进制的补码中进行的正数的补码为本身 如33的二进制表示为 00000000 00000000 00000000 00100001 补码为 00000000 00000000 00000000 00100001负数的补码为符号位即最高位1不变(负数符号位为1,正数为0),其余各位取反,再加1 如-33的二进制表示为 10000000 00000000 00000000 00100001 补码为 11111111 11111111 1111111 11011111进行右移>>操作33>>5 即 补码 00000000 00000000 00000000 00100001 右移5位 00000000 00000000 00000000 00000001 因为33为正数,再取补码为 00000000 00000000 00000000 00000001 转为十进制为1 即33>>5=1-33>>5 即 补码 11111111 11111111 1111111 11011111 右移5位 00000111 11111111 11111111 11111110因为-33为负数,再取补码为 00000100 0000000 0000000 00000010 最前一位1为符号位 转为十进制为-2 即-33>>5=-2进行无符号右移>>>操作33>>>5 即 补码 00000000 00000000 00000000 00100001 右移5位 00000000 00000000 00000000 00000001 因为无符号位,代表结果肯定为正数,正数取补码为本身 00000000 00000000 00000000 00000001 转为十进制为1 即33>>>5=1-33>>>5 即 补码 11111111 11111111 1111111 11011111 右移5位 00000111 11111111 11111111 11111110因为无符号位,代表结果肯定为正数,正数取补码为本身 00000111 11111111 11111111 11111110 转为十进制为134217726 即-33>>>5=134217726*/



0 0