Java基础部分总结--01

本文总结了Java基础部分内容,包括类型转换(基本数据类型的自动与强制转换、引用类型的向上与向下转型)、运算符(前++和后++区别、三目运算符、==比较运算符)以及数组(定义方式、访问、遍历),还提及了IDEA数组遍历快捷键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java基础部分总结—01


1 类型转换

1-1基本数据类型转化

自动转换
  • 取值范围小的类型自动提升为取值范围大的类型
转换规则

byte、short、char运算时直接提升为int。

public class Main {
    public static void main(String[] args) {
        int i = 1;
        double d = 2.5;
        System.out.println(i+d);//out 3.5
    }
}

double 类型内存8个字节, int 类型内存4个字节。因此int类型的i被自动提升成了取值范围大的double。

强制类型转换

取值范围大的类型强制转换成取值范围小的类型。

转换格式

数据类型 变量名 = (数据类型)被转换数据值

 public static void main(String[] args) {
        int i = 1;
        double d = 2.5;
        /*
         *i是int类型的,d是double类型的,两者相加int类型的i会自动提升为double类型的,因此结果为double类型的
         * 当用int类型的result接收的时,会产生大范围向小范围的转化,需要使用强制转换。
         * */
        //        int result = i + d;  //错误
        int result = (int) (i + d);
        System.out.println(result);//3
    }
注意事项:
  • 浮点转换为整数,直接取消小数,不是四舍五入,会造成数据精度变化。

1-2引用类型转化——<多态的转型>

与基本数据类型转换相同,引用数据类型的转换也分为两种:

向上转型:
  • 多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的。(同基本类型的自动转型,向大范围转换)
使用格式

父类引用指向一个子类对象的时候,就是发生了向上转型。

//父类类型 变量名 = new 子类类型();
//如:
Animal a = new Cat();
//或者通过函数调用的时候传入参数
Show(new Cat());

void Show(Animal ani){
//...代码段
}
向下转型:
  • 父类类型向子类类型向下转换的过程,强制的过程。(同基本类型的强制转换类似,由大转小)
使用格式
  • 在强制类型转换前要进行instanceof关键字判断,否则容易报错!
  • 【在C#中用is判断,用as转换】
    if(变量名 instance 变量类型)
    //如果变量属于该数据类型,返回true;
    //如果变量不属于该数据类型,返回false;
  • 子类类型 变量名 = (子类类型) 父类变量名
 public static void main(String[] args) {
 //Object类是所有类的父类
        Object obj = "123456";
        //判断是否可以转换,由于String类是Object类的子类,故父类向子类转换要进行强制转换
        if (obj instanceof String) {
            String Str = (String) obj;//强制转换
            System.out.println(Str);
        }
        else {
            System.out.println("转换失败!");
        }
    }
//输出结果为123456;

2 运算符

前++和后++的区别:
  • 独立运算:
    在独立运算时,二者没有区别。++i和i++最后得到的i的结果相同。
 public static void main(String[] args) {
        int i = 0;
        int j=i;
        i++;
        ++j;
        System.out.println(i);//out i=1
        System.out.println(j);//out j=1
    }

唯一的区别
C++中是这样的…
i++在实现的时候,产生了一个local object,使得效率比++i低。

//++i 的版本
NT INT::operator++()
{
	*this=*this+1;
	return *this;
}
//i++ 的版本
const INT INT::operator ++(int)
{
	INT oldvalue=*this;
	*this=*this+1;
	return oldvalue;
}

==可以看出i++返回的是值类型,++i返回的是引用类型,由于引用类型可以作为左值,故可以

++++i;//ok
//i++++;//err
  • 混合运算
    前++:先赋值给其他变量,在自增;
    后++:先自增在赋值
 public static void main(String[] args) {
        int i = 0;
        int j = i;

        for (int i1 = 0; i1 < 10; i1++) {
            i = i++;
            j = ++j;
        }
        System.out.println(i);//out i=0
        System.out.println(j);//out j=10
    }
三目运算符
  • 格式
    数据类型 变量名 = 布尔类型表达式?结果1:结果2
  • 应用
    常常可以代替单个if-else语句,使得代码变简洁
public static void main(String[] args) {
        Random r = new Random();
        int i = r.nextInt(10);
        System.out.println("i=" + i);
        //        if(i>5){
        //            i++;
        //        }
        //        else {
        //            i--;
        //        }
        i = i > 5 ? ++i : --i; //使用三目运算符代替if-else,注意要使用++i和--i;
        System.out.println(i);
    }
==比较运算符
  • 对于基本数据类型:比较的是值
  • 对于引用数据类型:比较的是两个对象的地址值

3 数组

定义
  • 方法一:只定义
格式

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

  • 方法二:定义+初始化
格式

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};

  • 方法三:方法二的简写
格式

数据类型[] 数组名 = {元素1,元素2,元素3…};

数组的访问
  • 采用索引来访问:索引最大值=数组长度-1;
  • 数组长度 = 数组名.length;
数组的遍历

采用for(int i=0;i<数组名.length ; ++i )
或者采用foreach来实现–> for(数组类型 遍历变量:数组名)

IDEA快捷键
  • 数组遍历 :数组名.fori 或数组名.iter
代码分析
 public static void main(String[] args) {
        //数组的定义
        int[] a = new int[10];//方法一,定义了一个int类型的数组a;
        int[] b = new int[]{1, 2, 3};//方法二,定义并初始化了数组b,其值为1,2,3;
        int[] c = {4, 5, 6};//方法三,定义并初始化了数组c;
        //对数组a遍历赋值
        for (int i = 0; i < a.length; i++) {
            a[i] = i;
        }
        //对数组a遍历输出
        for (int i : a) {
            System.out.println(i);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值