java基础(二)

一、if

1) if (逻辑表达式){}... else{}:只有逻辑表达式为true才会执行代码块,否则执行else

2)if(逻辑表达式){}:只有逻辑表达式为true才会执行代码块,否则执行其他语句不执行if语句

3)if(逻辑表达式){}else if(逻辑表达式){}…else{}:只有逻辑表达式为true才会执行代码块,逐层匹配,如果有个逻辑表达式符合条件,则其他if语句将不会执行,匹配时以顺序结构执行。

注:必须有一条是逻辑表达式,整体语句返回值应该是boolean类型。

二、switch

switch(表达式) {

                case value1:

                     statements;

                     break;

                ...

                default:

                     statements;

                     break;

          }value是所有可选择的值,是具体的值,default是默认。Break跳出执行,表达式可以是任意表达式或有返回值的方法,语句等。

    a. 当switch表达式的值不与任何case子句匹配时,程序执行default子句,假如没有default子句,则程序直接

       退出switch语句。default子句可以位于switch语句中的任何位置。

    b. 如果switch表达式与某个case表达式匹配,或者与default情况匹配,就从这个case子句或default子句开始执行。

       假如遇到break,就退出整个switch语句,否则依次执行switch语句中后续的case子句,不再检查case表达式的值。

    c. switch语句的功能也可以用if...else语句来实现。但switch语句会使程序更简洁,可读性更强。而if...else功能更为强大。

循环语句

for(表达式1;表达式2;表达式3){//执行循序1243,其中2必须的逻辑表达式

代码体4                                             //3可以放在代码体中,表达式可以放for循环外面

    }                                                            //可以写为for(;逻辑表达式;)

while(逻辑表达式){                         //表达式为true时执行循环体

    }                                                            //如果是true则是死循环

   do{

循环体;                                      //至少执行一次do语句块

   }while(逻辑表达式);                        //表达式为true则继续执行do语句

注:适用与循环次数明确的。While适合于条件不明确的。

. 初始化部分:用来设置循环的一些初始条件,比如循环控制变量的初始值;

. 循环条件:这是一个布尔表达式,每一次循环都要对该表达式求值,以判断到底继续循环还是终止循环。

. 循环体:这是循环操作的主体内容,可以是一条语句,也可以是多条语句;

. 迭代部分:用来改变循环控制变量的值,从而改变循环条件表达式的值;

8. 循环语句中流程跳转

  1)break: 终止当前或指定循环;

  2)continue: 跳过本次循环,执行下一次循环,或执行标号标识的循环体。

3)label: 标号用来标识程序中的语句,标号的名字可以是任意的合法标识符。(取名)

 

 

 

 

 

数组中的元素可以是任意类型(包括基本类型和引用类),但同一个数组里只能存放类型相同的元素。

. 声明一个数组类型的引用变量,简称为数组变量;

. 用new语句构造数组的实例。new语句为数组分配内存,并且为数组中的每个元素赋予默认值;

. 初始化,即为数组的每个元素设置合适的初始值。

1) 一个存放同一类型数据的集合

       a. 即可以是基本类型,也可以是对象类型;

       b. 数组中的每个数据为元素;

    2) 数组是一个对象,成员的数量是数组长度、成员数组中的元素;

    3) 声明了一个数组变量并不是创建了一个对象;

    4) 声明数组的方式:

             Int[] a或者int a[]

注意:1) 声明数组变量的时侯,不能指定数组的长度

1. 创建数组对象;(new)

       a. 在堆区中为数组分配内存空间,以上代码创建了一个包含2个元素的int数组

       b. 为数组中的每个元素赋予其数据类型的默认值。

         byte/short/int/long      0

         float                          0.0f

         double                0.0d

         String                null

         char                  '\u0000'

         boolean               false

c. 返回数组对象的引用

用new语句创建数组对象时,需要指定数组长度。数组长度可以用具体的数值表示,也可以用变量表示。数组的长度可以为0,此时数组中一个元素也没有。数组对象创建后,它的长度是固定的。数组对象的长度是无法改变的,但是数组变量可以改变所引用的数组对象。数组间进行赋值。

数组中的每个元素都有一个索引,数组下标从0开始,利用下标可以访问数组中的任意元素

或者给数组赋值。

1) 声明、创建、初始化分开

2) 声明、创建的同时并初始化数组;

多维数组:采用数组中的数组来声明

ArrayIndexOutOfBoundsException数组下标越界,说你下标超出了数组长度-1

数组都有一个length属性,表示数组的长度. 该属性只能读取,但是不能修改。

a. 数组变量必须在指向(new)一个数组对象之后,才能访问其元素,否则NullPointerException

b. 当数组的元素为引用类型时,数组中存放的是对象的引用,而不是对象本身;

3) 数组内容排序

冒泡排序:值较小的数逐渐向数组的顶部(即朝第一个元素)冒上来,就像水中的气泡上升一样,同时,值较大的数据逐渐向数组的底部(即朝最后一个元素)沉下去。这种算法用嵌套的循环对整个数组进行数次遍历,每次遍历都要比较数组中相邻的一对元素,如果这对元素以升序(或者值相等)的顺序排列,那么保持它们的位置不变;如果这对元素以降序的顺序排列,那么交换它们的值。

         4)java.util.Arrays辅助类的使用。sort(int[] n)以及binarySearch(int[] n,int key)方法的使用。

注意: a. 这二个方法均为static方法,可直接通过类名使用;

      b. binarySearch方法必须保证数组中的元素已经按照升序排列,这样才能得到正确的结果;

toCharArray();讲一个字符串转成字符数组

5. 数组的拷贝:     

      我们可以通过复制数组的内容变通实现改变数组长度。在System类中提供一个辅助的arraycopy方法提供复制数组内容的功能:

6、可变参数

可变参数前面可以加其他参数,可变参数后面不能加任何参数。

7、格式化出输出数据

System.out.printf是JDK1.5之后加入的新的方法,可以给我们格式化输出内容

// "%"表示进行格式化输出,"%"之后的内容为格式的定义。

// "f"表示格式化输出浮点数。

// "%+9.2"中的9表示输出的长度,2表示小数点后的位数。"+"表示输出的数带正负号。

// "-"表示输出的数左对齐(默认为右对齐)。

// "+-"表示输出的数带正负号且左对齐。

// "d"表示输出十进制整数。

// "o"表示输出八进制整数。

// "x"表示输出十六进制整数。

// "#x"表示输出带有十六进制标志的整数。

// "s"表示输出字符串。

System.out.printf("输出一个浮点数:%f,一个整数:%d,一个字符串:%s")

 

 

采用面向对象语言进行编程称为面向对象编程(Object-Oriented Programming, OOP)

Java是面向对象的,Java的编程单位是类,对象最后要通过类进行实例化(即“创建”)。

1) 类是一种类型:是引用类型;

2) 类是元数据:描述数据的数据,因为数据在面向对象领域里以对象的形式存在,所以类是对象共有属性和方法的抽象描述。

注:Java程序是各种对象相互交互作用、而不是类。

方法:

格式:修饰符返回类型 方法名(参数列表)异常抛出类型{...}

   1) 必须有返回值,如果方法没有返回值,必须用void申明返回类型。

   2) 构造器无返回类型,方法名和类名一致。

   3) 方法的修饰符可以同时有多个(多个修饰符之间没有先后顺序)

注意:return_type:如果方法定义了返回类型,那么在方法体里面就必须出现return语句,而且返回的数据类型要和声明一致,如果没有返回类型的话(void),那么方法体里面可以写return,也可以不写return。当代码执行了return语句,那么代码就不往下执行了,直接退出这个方法并返回

    1返回值为void 也能写return; 代表方法结束

    2return下方不能写代码

    3如果方法返回值类型部位void 

     且有if  else 那么每一个分支都写return要么在if else外面写return

方法中定义的参数我们通常叫做形参,调用有参数的方法时,我们通常会

传递一些实参给方法,参数只要传递数据类型兼容的数据即可,即可以自动转换或者匹配。

参数传递分为两种:

1) 值传递:对于基本数据类型,参数通过值传递。(把实参的值复制一份再传给形参)

2) 引用传递:对于引用类型,参数通过引用(对象的引用)传递。(把实参引用中地址值复制一份再传给形参)

this关键字

    在方法调用、参数传递过程中,极有可能出现参数名称与实例变量名同时的情况。在一个方法内,可以定义和成员变量同名的局部变量或参数,此时成员变量被屏蔽。

作用3: 在类的构造器中用this关键字可以调用类的其他的构造器

1.this只能出现在构造函数代码块中的第一句(前提是this这个时候代表的是调用其他构造器)

2.由this调用的构造器不会再创建新的对象

3.不能调用本身构造器

数据隐藏

在前面封装的属性前面用private修饰,表示该属性不能被其它类访问和修改,它只能被本类访问和修改,范围限制在本类内。

使用get/set方法来访问类中被private修饰的属性。

这样做的目的就是隐藏数据信息,保证数据的安全.

方法重载(overload)

有时侯,类的同一种功能有多种实现方式,换句话说,有很多相同名称的方法,参数不同。这给用户对这种功能的调用使用提供了很大的灵活性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值