黑马程序员----JAVA基础----基础要打好!

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

 

标识符:

 

Java语言中,对于变量常量,函数,语句块也有名字,我们统统称之为Java标识符.

 

标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的。

 

由26个英文字母大小写,数字:0-9 符号:_ $ 组成

 

定义合法标识符规则:

 

1、不可以使用关键字。

 

2、数字不可以开头。

 

3、Java中对大小写敏感。

 

Java中的注释格式:

 

单行注释:

 

格式: //注释文字

 

多行注释:

 

格式:

/*注释文字

*注释文字

*/

 

文档注释:

 

格式:/** 注释文字 */


它可以通过javadoc命令对文档注释提取,成为说明书。

 

常量:

 

常量表示的是在程序中不能被修改的数据。

 

java中常量的分类:

 

1,整数常量。所有整数

 

2,小数常量。所有小数

 

3,布尔型常量。比较特殊,只有两个数值。true 和false。

 

4,字符常量。将一个数字、字母或者符号用单引号( ‘’ )标识。

 

5,字符串常量。将一个或者多个字符用双引号标识。

 

6,null常量。只有一个数值就是:null.

 

整数运用较常见,对于整数:java有三种表现形式。

 

十进制:0-9 ,满10进1.

 

八进制:0-7 ,满8进1. 用0开头表示。

 

十六进制:0-9,A-F,满16进1. 用0x开头表示。

 

进制的基本转换算法:

  

十进制、二进制互转:

 

十进制转成二进制  除以2取余数

 

二进制转成十进制  乘以2的幂数

 

十进制、十六进制互转:

 

负数的二进制表现形式

 

对应的正数二进制取反加1

 

 

变量:

 

就是将不确定的数据进行存储。也就是需要在内存中开辟一个空间。

 

分为:局部变量或者成员变量

 

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间

 

整数默认:int    小数默认:double

 

类型转换分为:

 

自动类型转换(隐式类型转换)

 

强制类型转换(显式类型转换)

 

自动类型提升示例:

 

byte a = 4;

int x = 5;

x = x + a;//a会自动提升为int类型进行运算,占用四个字节内存。

 

 

强制类型转换示例:

 

byte a = 3;

a = a + 4;//系统会报错

a = (byte)a+4;//强制类型转换,强制将a+4的结果转换为byte类型,再赋值给a。

 

 

分析基本数据类型的特点,最大值和最小值。


1

基本类型:int 二进制位数:32


最小值: -2147483648 -231次方)


最大值: 2147483647  231次方-1


2

基本类型:short 二进制位数:16


最小值:-32768 -215此方)


最大值:32767 215次方-1


3

基本类型:long 二进制位数:64

 

最小值:-9223372036854775808 -263次方)


最大值:9223372036854775807 263次方-1


4

基本类型:float 二进制位数:32

 

最小值:1.4E-45 2-149次方)


最大值:3.4028235E38 2128次方-1


5

基本类型:double 二进制位数:64


最小值:4.9E-324 2-1074次方)


最大值:1.7976931348623157E308 21024次方-1


算术运算符

 



比较运算符:



 

逻辑运算符:

 



 

“&”和“&&”的区别:

单&时,左边无论真假,右边都进行运算;


双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。


“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。

 

 

位运算





 

三元运算符:

 

格式:

 

(条件表达式)?表达式1:表达式2;

 

如果条件为true,执行表达式1;

 

如果条件为false,执行表达式2;

 

三元运算符是if语句的简化形式,但有其限制,当计算结果不是布尔型时,只能用if语句。

 

程序流程控制:

 

判断结构:if语句

三种格式:

1. if(条件表达式)

{

执行语句;

}

1. if(条件表达式)

{

执行语句;

}

else

{

执行语句;

}

 

1. if(条件表达式)

{

执行语句;

}

else if (条件表达式)

{

执行语句;

}

……

else

{

执行语句;

}

 

 

 

if语句特点:

 

a,每一种格式都是单条语句。

 

b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。

 

c,条件表达式无论写成什么样子,只看最终的结构是否是true 或者 false;

 

选择结构:

 

switch语句

 

格式:

 

switch(表达式)

{

case 取值1:

 

执行语句;

 

break

 

case 取值2:

 

执行语句;

 

break

…...

default:

 

执行语句;

 

break;(可以省略)

}

 

switch语句特点:

 

a,switch语句选择的类型只有四种:byteshortint  char

 

b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default

 

c,结束switch语句的两种情况:遇到break,执行到switch语句结束。

 

d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。

 

如果判断的具体数值不多,而且符合byte short int char这四种类型。

 

虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。

 

其他情况:对区间判断,对结果为boolean类型判断,使用ifif的使用范围更广。



循环结构:

 

 

while语句格式:

 

 

while(条件表达式)

{

 

         执行语句;

 

}

 

 

do while语句格式:

 

do

{

 

         执行语句;

 

 

}while(条件表达式);

 

 

do while特点是条件无论是否满足,

 

 

循环体至少被执行一次。

 

 

格式:

 

 

for(初始化表达式;循环条件表达式;循环后的操作表达式)

 

{

         执行语句;

}

 

 

            1、for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然

 

 

后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。

 

 

            2、while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while

 

 

循环使用的变量在循环结束后还可以继续使用。

 

 

           3、最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某

 

 

些条件,来控制循环。

 

 

 

break(跳出),  continue(继续):

 

 

 

break语句:应用范围:选择结构和循环结构。

 

 

 

continue语句:应用于循环结构。

 

 

 

for和while的区别:

 

 

1、变量有自己的作用域,对于for来说:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语

 

 

句内有效。For语句执行完毕,该变量在内存中被释放。

 

 

2、For和while可以进行互换,如果需要定义循环增量。用for更为合适。

 

 

Java代码  

for(int x = 0; x<3 ; x++)  

    {  

        System.out.println("x="+x);  

  

    }  

      

    int y=0;  

    while(y<3)  

    {  

        System.out.println("y="+y);  

        y++;  

    }  

    System.out.println("y===="+y);  

 

 

For练习:

 

*
**
***
****
*****

 

Java代码  

for (int x=0; x<5 ;x++ )  

    {  

        for (int y=0 ; y<=x ; y++ )  

        {  

            System.out.print("*");  

        }  

        System.out.println();  

    }  

 

 

1
12
123
1234
12345

 

Java代码  

for (int x=1; x<=5; x++)  

    {   

        for (int y=1; y<=x;y++ )  

        {  

            System.out.print(y);  

        }  

        System.out.println();  

    }  

 

 

 九九乘法表

 

1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9

 

 

Java代码  

for (int x=1; x<=9 ; x++)  

    {  

        for (int y=1; y<=x; y++)  

        {  

            System.out.print(y+"*"+x+"="+y*x+"\t");  

        }  

        System.out.println();  

    }  

 

 

函数:

 

什么是函数:

 

 

函数就是定义在类中的具有特定功能的一段独立小程序。

 

 

函数也称为方法。

 

 

函数的格式:

 

 

修饰符返回值类型函数名(参数类型形式参数1,参数类型形式参数2,)

         {

                            执行语句;

 

                            return 返回值;

         }

 

 

         返回值类型:函数运行后的结果的数据类型。

 

 

         参数类型:是形式参数的数据类型。

 

 

         形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。

 

 

         实际参数:传递给形式参数的具体数值。

 

 

         return:用于结束函数。

 

 

         返回值:该值会返回给调用者。

 

 

重载:

 

 

在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。

 

 

特点:

 

 

         与返回值类型无关,只看参数列表。

 

 

数组:

 

 

1、同一种类型数据的集合。其实数组就是一个容器。

 

 

2、可以自动给数组中的元素从0开始编号,方便操作这些元素。

 

 

3、元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

 

 

 

栈内存:

 

 

         用于存储局部变量,当数据使用完,所占空间会自动释放。

 

 

堆内存:

 

 

1、数组和对象,通过new建立的实例都存放在堆内存中。

 

 

2、每一个实体都有内存地址值

 

 

3、实体中的变量都有默认初始化值

 

 

4、实体不在被使用,会在不确定的时间内被垃圾回收器回收

 

 

 

Java代码  

public static void printArray(int[] arr)  

    {  

        System.out.print("[");  

        for(int x=0; x<arr.length; x++)  

        {  

            if(x!=arr.length-1)  

                System.out.print(arr[x]+", ");  

            else  

                System.out.println(arr[x]+"]");  

  

        }         

    }  

 

 

获取数组的最大值:

 

 

Java代码  

public static int getMax_2(int[] arr)  

    {  

        int max = 0;  

  

        for(int x=1; x<arr.length; x++)//遍历比较数组元素的大小  

        {  

            if(arr[x]>arr[max])//经较大元素的角标赋值给max  

                max = x;  

        }  

        return arr[max];  

    }  

 

 

获取最小值:

 

Java代码  

public static int getMin(int[] arr)  

    {  

        int min = 0;  

        for(int x=1; x<arr.length; x++)  

        {  

            if(arr[x]<arr[min])  

                min = x;  

        }  

        return arr[min];  

    }  

 

 

 

排序方法:

 

 

 

选择排序:

 

 

 

Java代码  

/* 

    选择排序。 

    内循环结束一次,最值出现头角标位置上。 

    */  

    public static void selectSort(int[] arr)  

    {  

        for (int x=0; x<arr.length-1 ; x++)  

        {  

            for(int y=x+1; y<arr.length; y++)  

            {  

                if(arr[x]>arr[y])  

                {  

                    int temp = arr[x];  

                    arr[x] = arr[y];  

                    arr[y]= temp;  

                }  

            }  

        }  

    }  

    /* 

    冒泡排序 

    */  

  

    public static void bubbleSort(int[] arr)  

    {  

        for(int x=0; x<arr.length-1; x++)  

        {                                     

            for(int y=0; y<arr.length-x-1; y++)//-x:让每一次比较的元素减少,-1:避免角标越界。  

            {  

                if(arr[y]<arr[y+1])  

                {  

                    int temp = arr[y];  

                    arr[y] = arr[y+1];  

                    arr[y+1] = temp;  

                }  

            }  

        }  

    }  

 

 

 

折半查找:

 

 

Java代码  

/* 

折半查找。提高效率,但是必须要保证该数组是有序的数组。 

*/  

public static int halfSearch(int[] arr,int key)  

{  

    int min,max,mid;  

    min = 0;  

    max = arr.length-1;  

    mid = (max+min)/2;  

  

    while(arr[mid]!=key)  

    {  

        if(key>arr[mid])  

            min = mid + 1;  

        else if(key<arr[mid])  

            max = mid - 1;  

  

        if(min>max)  

            return -1;  

        mid = (max+min)/2;  

    }  

    return mid;  

}  

  

*  

折半的第二种方式。  

*/  

public static int halfSearch_2(int[] arr,int key)  

{  

    int min = 0,max = arr.length-1,mid;  

  

    while(min<=max)  

    {  

        mid = (max+min)>>1;  

  

        if(key>arr[mid])  

            min = mid + 1;  

        else if(key<arr[mid])  

            max = mid - 1;  

        else  

            return mid;  

    }  

    return -1;  

}  

 

 

二维数组:

 

 

格式1:int[][] arr = new int[3][2];

 

 

定义了名称为arr的二维数组

 

 

二维数组中有3个一维数组

 

 

每一个一维数组中有2个元素

 

 

一维数组的名称分别为arr[0], arr[1], arr[2]

 

 

给第一个一维数组1脚标位赋值为78写法是:arr[0][1]= 78;

 

 

格式2:int[][] arr = new int[3][];

 

 

arr中定义了3个未定义长度的一维数组。

 

 

格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

 

 

arr中定义了3个一维数组。

 

 

第一个一维数组为{3,8,2},第二个一维数组为{2,7},第三个一维数组{9,0,1,6}

 

  

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值