Hello Java —— Java初体验

本文详细介绍了Java编程语言的基础知识,包括基本数据类型(如boolean、char、int、float等)及其包装类,引用数据类型(数组和对象),以及数据类型转换的规则。还特别讨论了自动装箱、拆箱、逻辑运算符(&与&&)的使用,以及int与Integer的区别。此外,文章通过实例展示了类型转换在表达式运算和赋值运算中的应用。
摘要由CSDN通过智能技术生成

Hello Java

    Java是继C/C++、python、HTML/CSS/JS之后我学习的第四种编程语言,纯面向对象的语言。其语法上类C,编译风格独特(编译产生.class文件,Java虚拟机解释.class文件),解释型语言,运行速度较快,具有许多特点(如分布式、动态多线程等)。
    这篇文章用于记录我对Java语言的一个认识(其实是一次作业)。

Java的数据类型

    Java的数据类型大可分为两类:

  • 基本数据类型

boolean bl = true; //布尔类型,取值为true或false
char ch = 'a'; //字符类型
int num = 10; //整型,除int外还有byte、short和long
float ft = 3.14; //浮点类型,还有double也可声明
基本数据类型还有其对应的包装类以完成一些特殊操作
基本数据类型包装类
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
其作用有:
  1. 作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
  2. 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。
  • 引用数据类型

    Java的引用数据类型有两种:

  1. 数组(Array)
int[] array; //声明数组 数据类型[] 数组名;
array = new int[10]; //定位数组 数组变量 = new 数据类型[数组长度]
//或者这样写
//int[] array = new int[10];
//还可以这样写
//int[] array = new int[]{ 1,2,3,4,5 };
  1. 对象(Object)
class MyClass { //声明方法: class 类名 {}
	int num; //域变量声明方法: 类型 域变量名
	void speak(int num) {
		System.out.println(num);
	}
	/*方法声明
	[修饰符] 返回值类型 方法名(参数类型 参数1, [参数类型 参数2]...) {
		方法体
	}*/
}

基本数据类型转换

Java基本数据类型的转换可以分为两类:

  1. 自动类型转换

要实现自动类型准换需满足:
a. 两种数据类型相互转换;
b. 目标类型的取值范围大于源类型的取值范围。

int a = 3;
//byte b=a; 报错,类型不匹配,不能从int转换为byte。
//byte的取值范围要小于int所以编译失败。
short a=3;float b=a; //成功,因为b的取值范围是float类型4个字节。
//a的取值范围是short类型2个字节。b的范围大于a所以成功
  1. 强制类型转换

当两种数据类型彼此不兼容,或者说目标类型取值范围小于源类型时,就需要强制类型转换了。

//int b=3;short a=b;
//这是我们都知道编译会失败,因为a(short)类型小于b(int)类型的。
int b=3;short a=(short)b;
//这样便会编译通过,通过在源类型变量面前,加上(目的数据类型),便会把b(int)类型强制转换成byte类型的。
byte a=1; byte a=b;
//1是一个int类型的,为什么可以赋值给a(byte)类型的呢?

    答:这是因为在1是一个常量,这个值是固定不变的,所以系统会自动判断1是不是在byte类型的范围当中。
    而byte a=b,因为b是一个变量,所以结果是不确定的,系统无法判定它是否是byte类型的范围。

特殊情况上面的是赋值的时候所涉及到的基本数据类型转换问题,那下面呢是在进行运算的时候,可能涉及到的一些特殊情况。
第一种情况:表达式运算的类型转换
byte a=3;byte b=5;
//byte z=a+b;
//这个运算同样会编译失败,因为在运算期间变量a和b都被自动提升为int类型,表达式的结果也就变成了int型,所以我们需要进行强制类型转换。
byte z=(byte)(a+b); //正确代码。
byte a=4;byte b;
//b=a+3;
//错误代码示范
b=(byte)(a+3); //正确代码
第二种情况:赋值运算符的类型转换
short s=3;
s+=3; //运行成功。

    这是因为在使用赋值运算赋值的时候,java虚拟机会自动的完成强制类型的转换。

int 与 Integer

    int为基础数据类型,而Integer为int类型的包装类。简单来说,int是类型,而Integer是对象。

    int是java的8个原始数据类型(boolean, byte, short, char, int, float, double, long)之一。java虽然号称一切皆是对象,但原始数据类型除外。
     Integer是int对应的包装类,它有一个int类型的字段存储数据,并提供了数学运算,int和字符串之间转换等基本操作。在java5中,引入了自动装箱和自动拆箱功能,并新增了静态工厂方法valueof,在调用它的时候回利用一个缓存机制,这个缓存默认值在-128到127之间。所有的包装类都被声明为"private final",所以,它们同样是不可变类型。

Integer intVar1 = new Integer(5); //通过包装类的构造方法创建对象
Integer intVar2 = 5; //自动装箱
Integer intVar3 = Integer.valueOf(5);
int num = intVar1.intValue();  //包装类通过调用此方法获得int值

逻辑运算符 & 与 &&

    Java中的逻辑运算符&和&&均为逻辑与,只有两边表达式均为true才会返回true。

    &&的短路功能,当第一个表达式的值为false的时候,则不再计算第二个表达式;&则两个表达式都执行。
    &可以用作位运算符,当&两边的表达式不是Boolean类型的时候,&表示按位操作。

int i = 0, j = 0;
if(i == 0 && ++j > 0) { }
System.out.println(i);
//输出结果为0;
if(j == 0 & ++j > 0) { }
System.out.println(j);
//输出结果为1;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值