Java基础(数据类型转化+流程控制语句+方法+数组)-已合并

一、 基本数据类型及运算

8种基本数据类型

基本数据类型位数默认值取值范围
byte80-2^7 - 2^7-1
boolean8falsetrue、false
short160-2^15 - 2^15-1
char160 - 2^16-1
int320-2^31 - 2^31-1
float320.0-2^31 - 2^31-1
double640.0-2^63 - 2^63-1
long640-2^63 - 2^63-1

问题:一个 int 类型变量和一个 byte 类型变量进行加法运算, 结果会是什么数据类型?

  private static void point1(){
        int i = 1;
        byte j = 11;
        System.out.println(getType(i));
        System.out.println(getType(j));
        //自动转换:将取值范围小的类型 自动提升为 取值范围大的类型 。(byte、short、char 运算时直接提升为 int )
        System.out.println(getType(i+j));

//        输出:
//        class java.lang.Integer
//        class java.lang.Byte
//        class java.lang.Integer
    }

二、运算符

a++ 和 ++a在运算中的不同。(独立运算:无影响,混合运算:有影响)

      private static void point2(){
        //++a先运算后赋值给b
        int a = 1;
        int b = ++a;
        System.out.println("a:"+a);//计算结果是2
        System.out.println("b:"+b);//计算结果是2

        //++a先赋值给d后运算
        int c = 1;
        int d = c++;
        System.out.println("c:"+c);//计算结果是2
        System.out.println("d:"+d);//计算结果是1

//        输出:
//        a:2
//        b:2
//        c:2
//        d:1
    }

字符串 + 数字 = 字符串

    private static void point3(){
        System.out.println("'5'+5="+'5'+5);
//        输出:
//        '5'+5=55
    }
    

三元运算符(三元运算符格式:数据类型 变量名 = 布尔类型表达式?结果1:结果2)

    private static void point4(){
        int a = 1;
        int b = 2;
        //a与b比较,若a==b,则c==3,否则a==4
        int c = (a==b?3:4);
        System.out.println(c);
    }

三、流程控制语句

判断语句
if语句第一种格式: if
if语句第二种格式: if…else
if语句第三种格式: if…else if …else
选择语句
switch语句格式:

        int a = 1;
        //switch语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK7后可以接收字符串。
        switch (a){
            case 1:
                System.out.println("礼拜一");
                break;
            case 2:
                System.out.println("礼拜二");
                break;
            case 3:
                System.out.println("礼拜三");
                break;
            case 4:
                System.out.println("礼拜四");
                break;
        }
        //输出:礼拜一

注意:在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。

循环语句
for循环语句格式:

for(初始化表达式①; 布尔表达式②; 步进表达式④){
循环体③
}
执行流程
执行顺序:①②③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化
②负责判断是否满足循环条件,不满足则跳出循环
③具体执行的语句
④循环后,循环条件所涉及变量的变化情况

while循环语句格式:

初始化表达式①
while(布尔表达式②){
循环体③
步进表达式④
}
执行流程
执行顺序:①②③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句。
④循环后,循环变量的变化情况。

do…while循环格式

初始化表达式①
do{
循环体③
步进表达式④
}while(布尔表达式②);
执行流程
执行顺序:①③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句
④循环后,循环变量的变化情况

for 和 while 的小区别:
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。

嵌套循环
所谓嵌套循环,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总
共的循环次数=外循环次数*内循环次数
嵌套循环格式:

for(初始化表达式①; 循环条件②; 步进表达式⑦) {
for(初始化表达式③; 循环条件④; 步进表达式⑥) {
执行语句⑤;
}
}
嵌套循环执行流程:
执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
外循环一次,内循环多次。
比如跳绳:一共跳5组,每组跳10个。5组就是外循环,10个就是内循环。

方法入门

1.什么是方法,方法的作用是什么?
就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。
当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。

2.方法的定义

**注意事项**
方法必须定义在一类中方法外
方法不能定义在另一个方法的里面

定义格式:
修饰符 返回值类型 方法名(参数列表){
//代码省略...
return 方法的返回值;
}
修饰符: public static 固定写法
返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者
参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
return:将方法执行后的结果带给调用者,方法执行到 return ,整体方法运行结束

3.方法的调用
方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法。在主方法中,直接写要调用的方法名字就可以调用了
调用方法的三种形式:
1.直接调用:直接写方法名调用
2.赋值调用:调用方法,在方法前面定义变量,接收方法返回值
3.输出语句调用:在输出语句中调用方法, System.out.println(方法名()) 。

4.方法重载
1.什么是方法的重载
方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返
回值类型无关。
2.什么样才叫做重载?
方法的重载与下列因素有关:参数个数不同,参数数据类型不同,参数类型顺序不同。
方法的重载与下列因素无关:与参数名称无关,与方法返回值无关

3.重载方法调用:JVM通过方法的参数列表,调用不同的方法。

数组

1.什么是容器
是将多个数据存储到一起,每个数据称为该容器的元素。
2.什么是数组
数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。

数组的定义
第一种:

数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
int[] arr = new int[3];

数组定义格式详解:
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
[] : 表示数组。
数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。
new:关键字,创建数组使用的关键字。
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。
[长度]:数组的长度,表示数组容器中可以存储多少个元素。

注意:数组有定长特性,长度一旦指定,不可更改。
和水杯道理相同,买了一个2升的水杯,总容量就是2升,不能多也不能少。

第二种:

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
int[] arr = new int[]{1,2,3,4,5};

第三种:

数据类型[] 数组名 = {元素1,元素2,元素3...};
int[] arr = {1,2,3,4,5};

数组的访问
索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引
(index),可以通过数组的索引访问到数组中的元素。

数组名[索引]

数组的长度属性: 每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的长度,语句为: 数组名.length ,属性length的执行结果是数组的长度,int类型结果。由次可以推断出,数
组的最大索引值为 数组名.length-1 。

索引访问数组中的元素:
数组名[索引]=数值,为数组中的元素赋值
变量=数组名[索引],获取出数组中的元素

数组原理内存图

一个数组的内存图

public static void main(String[] args) {
int[] arr = new int[3];
System.out.println(arr);//[I@5f150435
}

两个数组的内存图

public static void main(String[] args) {
int[] arr = new int[3];
int[] arr2 = new int[2];
System.out.println(arr);
System.out.println(arr2);
}

两个变量指向一个数组

public static void main(String[] args) {
// 定义数组,存储3个元素
int[] arr = new int[3];
//数组索引进行赋值
arr[0] = 5;
arr[1] = 6;
arr[2] = 7;
//输出3个索引上的元素值
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
//定义数组变量arr2,将arr的地址赋值给arr2
int[] arr2 = arr;
arr2[1] = 9;
System.out.println(arr[1]);
}
数组的常见操作

数组越界异常 ArrayIndexOutOfBoundsException
数组空指针异常NullPointerException

数组遍历【重点】

public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}

数组获取最大值元素

public static void main(String[] args) {
int[] arr = { 5, 15, 2000, 10000, 100, 4000 };
//定义变量,保存数组中0索引的元素
int max = arr[0];
//遍历数组,取出每个元素
for (int i = 0; i < arr.length; i++) {
//遍历到的元素和变量max比较
//如果数组元素大于max
if (arr[i] > max) {
//max记录住大值
max = arr[i];
}
}
System.out.println("数组最大值是: " + max);
}

数组反转

public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
/*
循环中定义变量min=0最小索引
max=arr.length‐1最大索引
min++,max‐‐
*/
for (int min = 0, max = arr.length ‐ 1; min <= max; min++, max‐‐) {
//利用第三方变量完成数组中的元素交换
int temp = arr[min];
arr[min] = arr[max];
arr[max] = temp;
}
// 反转后,遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}

数组作为方法参数
数组作为方法参数传递,传递的参数是数组内存的地址。
数组作为方法返回值
数组作为方法的返回值,返回的是数组的内存地址
**注意:**方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值