`
sky_eye
  • 浏览: 4515 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

黑马程序员_java语言基础

阅读更多

                               黑马程序员_java语言基础

 

          ---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

 

 

java语言基础组成部分

一,标示符

        像类的名称,变量的名称 。注意名称一定要有意义,要方便阅读。而且必须遵循以下规则:

           1、英文,数字,_$组成

           2、数字不可以开头

           3、不可以试用关键字

注意 :再次强调,java严格区分大小写,所以有些关键字开头大写,如果不是这样的话,会只是一个名称,或者程序报错。

            一般规范命名要注意的,包名一般都是小写;类名首字母大写,多个单词组成,每个每个的开头都大写;变量名称,多个字母出去第一个每个单词首字母大写;常量就都大写。平常自己编写程序的时候要注意到这个规范,要成良好习惯。

 

二,java中的常量与变量

       整数型(byte  short  int  long)byte即是字节,由八个二进制位表示而成,其他依次是16个、32个、64个。long定义时要在数字后面加l    如:long  k= 4567l;

       浮点型(float   double)  float 定义是要在数字后面加f,如:float   k=2.3f;

       布尔型(boolean) true 、false注意只有这两个常量,就是真和假,有次可看出是用来判断的

       字符型(char )  使用时必须用单引号  'a'  , '4'    (0~~~6535)内存中占两个八位。

       字符串常量          使用时必须用双引号"acd"

  以上为基本数据类型

         类(class)    接口(interface)    数组([])

这三位为引用数据类型

 

(    注意程序里java本身一般整数型的常量为int型,小树默认为double型,所以编程时当数据定义的时候要注意,不要溢出。)

             例如:byte b=3;b = b+2; 此时b为byte型,而2为int型,所以当两个相加的时候,+号前的b会被系统升级为int型,相加后就不能赋值给byte  b 了。如果想赋值,就得用强制类型转换。方式为:(需要转换的类型)变量。  看下面的比较:

                        System.out.println('a');                  打印字符  a
                        System.out.println('a'+1);              此时打印出结果为98 ,因为char为两八位,1为四八位,系统自动提升char类型,所以输出为整数类型。
                        System.out.println((char)('a'+1));   强制转换方式,把结果以char类型输出。

注意需要记忆的东西:1)字符a在ASDII里面对应数字为97,A为65。

             

 

 以上为基本数据类型

         类(class)    接口(interface)    数组([])

这三位为引用数据类型

 

         定义变量的使用格式为:数据类型   变量名   =    初始化值。例如 int  x=4;   注意分号结束。改变x里面的值是这样的  直接  x=4;  如果再写 int  x=4,就意味又定义一个变量名,和第一个定义的变量就冲突了。

 

三,进制和转换

       计算机语言中常用到的进制有

        八进制:0-7,满8进1。用0开头表示。就是把二进制位每三位表示为一个。

        十六进制:0-9,A-F,满16进1,用0x开头。就是把二进制位每三位表示为一个。

        不同进制其实是同一个数的不同表现形式。

    1、1)二进制和十进制之间的转换,原理就是对十进制数进行除二运算

                 例如:把6换成2进制     6/2=3  余数为0

                                                       3/2=1  余数为1

                                                                         而1不能被二整出

                            此时把0和1和1倒着写    为110    此时就是十进制6转换为二进制110

         2)二进制转换为十进制  原理就是二进制乘以2的过程

               例如:110       从零开始 第一位乘以2的0次方,第二位1乘以2的1次方,第三位为1乘以2的2            次方,依次类推。

          3)二进制之间相加

                        101

                      +001              此处也是满2进1。

                     ----------

                        110

            其他进制转换也是类同的。十进制转换十六进制和八进制,先转换为二进制,然后转换为十六进制和八进制,即每四位为一位或者每三位为一位,这样计算比较方便。

            负数的二进制表现形式。如6,二进制位110;-6 的二进制,其实就是6的二进制取反+1。一般正数的最高位为0,负数的最高位为1。

 

四,运算

    %  取余   需要注意的是 1%5 ,  结果为左边,就是说左边比右边小,取左边。-1%5  结果是-1  ,就是说正负号取决于左边。

     区别a++和++a。 b=a++   就是先把a的值赋予b,在自增。b=++a   就是先给自己自增,然后赋值与b。

     字符串和任何数据使用+都是相连接,最终都会变成字符串。例子如下:

    System.out.println("a="+a+","+"b="+b);结果为a=3,b=4
     System.out.println("5+5="+5+5);结果为5+5=55

      转义字符应用:\n:换行。\b:退格,相当于backspace。 \r:按下回车键。 \t:制表符,相当于tab键。转义字符就是通过\  来改变后面字符或者符号的含义。例如:

      System.out.println("\"hello world\"");结果为带双引号的“hello world”    ,此处通过\转变后面双引号的意义。

        赋值运算里要注意 +=   -=   *=   /=   %=   的意义 。如+=就是把左右两天加起来的和付给左边,其他的类同。如:short s=4;
              s=s+5;   (不正确)             这一部丢失精度,不正确,此处变量不会自动更改类型,赋值不了左边
              s+=5;     (正确)            而+=会自动升级变量类型  正确

 

注意,比较运算里,不要把==写成=

       逻辑运算

逻辑运算就是连接boolean类型的表达式。

逻辑运算符里注意  异或  ^       记住,相同为假,不同为真。

&&和&的区别:用处上没有区别。&:无论左边是true是false,右边都运算。&&:当左边为false时,右边不运算。

||和|的区别   :用处上没有区别。|:无论左边是true是false,右边都运算。||:当左边为true时,右边不运算。

        位运算

位运算,<<   左移,实质就是原来的数乘以2的n次方,移动几位n就等于几

位运算,>>   右移,实质就是原来的数除以2的n次方,移动几位n就等于几。注意右移的时候,高位时0,则补0,如果最高位是1则补1。

位运算,>>> 无符号右移,不管左端最高位是1或0,都补0。

位运算相对于乘除来说,运算效率比较高。

&、 |、! 三个也是位运算,只是有以前的boolean型运算变为二进制型的0和1,此时是1视为真,0视为假,逻辑方面和以前逻辑运算一样。例如:6&3=

                                                               110

                                                            & 011

                                                          ------------

                                                               010    =    2    则  6 & 3 = 2

反码  ~    就是取反。小知识,一个数异或同一个数两次结果还是原数,可以用于数据加密。(6^3^3=60)

 

程序里二进制转换为十六进制

 

原理图:

               0000-0000 0000-0000 0000-1100 1110-0110

         &    0000-0000 0000-0000 0000-0000 0000-1111

-------------------------------------------------------------------------------

               0000-0000 0000-0000 0000-0000 0000-0110

就是用最后四位为1的与原数  进行  与   运算   ,这就取到了第一组四位。

                        0000-0000 0000-0000 0000-1100 1110-0110

         &    0000-0000 0000-0000 0000-0000 0000-1111

-------------------------------------------------------------------------------

               0000-0000 0000-0000 0000-0000 0000-1110

取第二组四位的时候,可以把原数进行右移4位即可,然后在和下面的数进行与运算,依次类推即可

  然后把相对应的数转换为十六进制即可。

  具体程序:class OperateDemo3
{
 public static void main(String[] args)
 {
  int num = 60;
  int n1 = num & 15;
  System.out.println((char)(n1-10+'A'));
  int temp = 60>>4;
  int n2 = temp & 15;
  if(n2>9)
  System.out.println((char)(n2-10+'A'));
  else
  System.out.println(n2);
 }
}

其中  ni 为与运算过后的值,结果为12,在十六进制里面是C。怎么变化,可以通过-10+'A',然后强制转化char类型即可。

三元运算符    (条件表达式)?表达式1:表达式2。条件表达式为true时,执行表达式1;条件表达式为false时,执行表达式2。

则上述程序输出语句可改为((n1>9)?(char)(n1-10+'A'):ni),用于判断n1是否大于9,n2同样。

 

 

 

                ---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

 

  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics