黑马程序员——02Java编程基础


------------ android培训 java培训 、期待与您交流!------------
 

java语言组成部分。

    1关键字,2标识符,3注释,4常量和变量,5运算符,6语句,7函数,8数组。

1,关键字分类:  
图片
 
图片
 
2,标识符
    即在程序中自定义的一些名称。组成:26个英文字母,数字 0-9,_和$。
    规则:数字不能开头;不能使用关键字。 Java中严格区分大小写
    规范:包名:多单词所有字母小写。xxxyyyzzz
    类名接口名:多单词首字母均大写。 XxxYyyZzz
    变量名和函数名:第一个单词小写,以后每个单词首字母大写。 xxxYyyZzz
    常量名:所有字母大写,每个单词用 _ 连接。 XXX_YYY_ZZZ
 

3,注释, 写代码先写注释 。01java入门日记中已学习。

4,常量与变量
    1)常量:表示不能改变的数值,1整数常量,2小数常量,3布尔型常量,4字符常量(将数字、字母或者符号用 ’  ’ 标识),5字符串    常量(用“  ”标识),6null常量。
    整数常量的四种表现形式:1十进制,2八进制(用0开头表示),3十六进制(用0x开头表示),4二进制(计算机内部的存在形式)
    各种进制的互相转换(十分明白)。
    有符号数的机器表示有  原码,反码, 补码(计算机中的数据以补码形式存在) ,移码 四种表示方法。
    负数二进制的表现形式(补码):6=0000000000000000 00000000 00000110
                                                        -6=11111111 11111111 11111111 11111010
     此处结合组成原理的内容理解各种码制之间的关系和转化:(总结如下
图片
    2)变量:将不确定的数据进行存储,也就是在内存中开辟一个空间。
        空间的类型:数据类型;名称:变量名。
        Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。
图片

    byte一个8位(-128~127),short两个8位(-32768~32767),int四个8位。
    float 四个8位,double 八个8位。
    char两个8位,范围0~65535(java采用Unicode字符集,C/C++采用ASCII字符集,一个8位,范围0~255)。
    ASCII 码: 0—— 48 ; a—— 97 ;A—— 65。 

     ??????????java中boolean型变量内存分配的大小思考???????????
     1)boolean a=true;//这个a在JVM中占4个字节即:32位。
    2)boolean[] b = new boolean[10];//数组时,每一个boolean在JVM中占一个字节。

     理由:
    1)JAVA规范中没有定义boolean类型的大小。
    2)但是:在JVM规范第2版中讲得十分清楚。我上边的结论就是从它当中取出来。
    根据:(JVM规范第2版 3.3.4节)
    Instead, expressions in the Javaprogramming language that operate on boolean values are compiled to use valuesof the Java virtual machine int data type. 
    Where Java programming language booleanvalues are mapped by compilers to values of Java virtual machine type int, thecompilers must use the same encoding. 而:Java virtual machine type int, whose values are 32-bit signedtwo's-complement integers。
Arrays of type boolean are accessed andmodified using the byte array instructions 
In Sun's JDK releases 1.0 and 1.1, and theJava 2 SDK, Standard Edition, v1.2, boolean arrays in the Java programminglanguage are encoded as Java virtual machine byte arrays, using 8 bits perboolean element.

    定义变量的格式:数据类型  变量名= 初始化值;
    long l=4l;
    float f=2.3f;
    char ch=’4’;
    boolean bo=true;
    当数据不确定时,需要对数据进行存储时,就定义一个变量来完成存储过程。
    类型转换:
    byte b=3;
    b=b+2;   //报错( b=( byte)( b+2) 有可能 丢失精度 )
    同一类型:低到高,自动提升;高到低,强转。
    不同类型:字符型----->整型----->浮点型。
     小应用:运算结果小数只保留整数部分,强制转换为int即可。     

5,运算符
    1)算数运算符
    int x=4270;
    x=x/1000*1000;
    System.out.println(x);
    输出:4000
     1%-5为1;-1%5为-1。(正负只看被模数)
    字符串数据和任何数据使用+都是相连接,最后都是字符串。
    System.out.println(“5+5=”+5+5);输出5+5=55
    System.out.println(“a=”+a+”,”+”b=”+b);
    2)转义字符  即通过\来转变后面字母或者符号的含义。
    System.out.print(“Hello world\n”); 
    System.out.println(“Hello world”);
    \n:换行。\r:回车。 ( windows中的回车键\r\n)
     
\t:制表符。\b:退格。
    Unix里换行是由一个字符\n表示,windows中换行是由两个字符来表示的\r\n。
    System.out.println(“\”hello\””);输出”hello”
    System.out.println(“\\hello\\”);输出\hello\
    char ch=’\n’;
    char c=’我’;
    3)赋值和比较运算符
    =,+=,-=,*=,/=,%=
    short s =4;
     s=s+5;//挂,两次运算,需要强制类型转换
    s+=5;//OK,一次运算,只做赋值运算,内部有自动转换动作。

    instanceof //检查是否是类的对象
    “hello” instanceof String  结果true
    4)逻辑运算符
    &与        |或        ^异或        !非        &&AND        ||OR
    int a=2;
    a>3&&a<6;     //&& 左边为假时,后面一个不做比较运算,从而增加运算速度
    5)位运算符
    <<左移        >>右移        >>>无符号右移         &与运算        |或运算         ^异或运算        ~反码
    位运算是直接对二进制进行运算,速度最快。
        左移右移的应用:2*8最快捷的方式是2<<3。
    交换两个变量的值:
    法一:(借助第三方变量)
    int n=3,m=8,temp;
    temp=n;
    n=m;
    m=temp;
    法二:(不借助第三发变量)
    n=n+m;
    m=n-m;
    n=n-m;
    法三:(使用异或运算符)
    n=n^m;
    m=n^m;
    n=n^m;
     异或运算符的小应用:数据加密解密。例如:查阅 com.itheima.day2. MyClassLoader.java
    6)三元运算符
    ()?  : 
    好处:可以简化 if else 代码;
    弊端:因为是一个运算符,所以运算完必须要有一个结果, 必须用一个变量来接收此运算符的返回值。

6,语句
 
判断、选择、循环结构;
 
1if else结构 简写格式:变量=(条件表达式)?表达式1:表达式2
 
2switch语句只接受六种类型:byte  short int char枚举类型(JDK5.0字符串(JDK7.0
 
所有的casedefault书写没有顺序。先执行case,再执行default当执行完default没有break后,则依次执行下面的case时不做判断,直到遇到break为止。switch效率较高,if使用范围较广。
 
若符合六种类型,用switch语句;若是对区间判断,对结果为boolean类型判断,使用if语句。

 3)循环whiledo whilefor
 
whilefor的区别:for(初始化表达式;;){ }循环完即释放初始化变量的内存。
 
若循环中的变量只用做自增操作,则用for循环更合理。
 
其中for的条件表达式必须是boolean型。表达式多的情况下用逗号隔开。
 
4break(跳出),continue(继续)
 
break语句应用范围:选择语句,循环语句(利用标号给循环起名);
 
continue语句应用范围:只能用于循环,结束本次循环,开始下次循环。

7,
函数
 
即定义在类中的具有特定功能的一段小程序。也称为方法。Java中最小的功能单元。
 
格式:
 
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2{
         
执行语句;
     
return返回值;
 
}

特点:1定义函数可以将功能代码进行封装;2便于对该功能进行复用;3函数只有被调用才能被执行;4提高了代码的复用性;5没有返回值类型用void,此时return在最后一行可以省略不写,编译器会自动添加。

注意:1函数中只能调用函数,不能在函数中定义函数。2函数的结果只能返回给调用者来处理。
函数返回值为void时,不能直接在主函数中打印。直接调用就OK。函数功能一般不要越权。例如:求和函数,只用来求和,至于结果是否被打印交由调用者处理。

函数重载(overload):在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表。
 
好处:方便于阅读,优化了程序设计。
 
什么时候用重载?当定义的功能相同,但当参与运算的未知内容不同,那么,这是就定义一个函数名称以表示功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
 

 8,数组
 
 即同一种类型数据的集合。其实数组就是一个容器。好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
 
1)静态初始化
 
格式1:元素类型[]  数组名=new  元素类型[元素个数或数组长度]
 
格式2:元素类型[]  数组名=new  元素类型[]{元素1,元素2…}
              
元素类型[]  数组名={元素1,元素2…};
 
2)遍历
 
数组中有一个属性.length获取数组的长度。
 
错误:1  ArrayIndexOutofBoundsException:数组下标越界异常。操作数组时,访问到了数组中不存在的角标。
       
2  NullPointerException:空指针异常。当引用没有任何指向,值为null的情况,该引用还在用于操作实体。
       
3  System.out.println(arr);输出为[I@de6ced  //引用的内存地址。
 
3int数组的默认值是0char数组的默认值\u0000(空位,相当于空格,Unicode码,java所支持的编码表),double数组的默认值0.0boolean数组的默认值false    


------------ android培训 java培训 、期待与您交流!------------

详情请查看: http://edu.csdn.net/heima  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值