变量的 声明、存放与作用域

简介: 变量声明 终极基类。java中所有的类最终都继承自单一的基类——Object。 向上转型:子类转换为基类。向下转型与之相反。注意:无论怎么转,都是声明类型互转,运行时类型是自始至终不会变的! String str; //只是创建引用,并没有创建对象。 变量存放 寄存器 c++可以向编译器建议变量存放在寄存器中。而java不能。 栈(一些书称为“堆栈”) 位于内存中。

变量声明

终极基类。java中所有的类最终都继承自单一的基类——Object

向上转型:子类转换为基类。向下转型与之相反。注意:无论怎么转,都是声明类型互转,运行时类型是自始至终不会变的!

String str; //只是创建引用,并没有创建对象。

变量存放

寄存器

c++可以向编译器建议变量存放在寄存器中。而java不能。

栈(一些书称为“堆栈”)

位于内存中。创建的引用位于栈中。

位于内存中。java所有对象都存在这里。

代码段

代码与常量。

RAM(即内存)

基本的例子是 流对象 和 持久化对象。在流对象中,对象转化成字节流,通常被发送给另外一台机器。在持久化对象中,对象被存放在磁盘上,因此即便程序终止,对象仍可以保持自己的状态。

基本类型

用 new 创建容量小的、简单的变量效率不是很高。因此对于int char float等基本类型,javac采用相同方法,不使用“new”来创建,存放于栈中。

java中基本类型所占字节大小不随硬件不同而不同,故更具有可移植性。

java元素类型 所占字节 包装器类型
boolean - Boolean
void - Void
byte 1 Byte
char 2 Character
short 2 Short
int 4 Integer
float 4 Float
long 8 Long
double 8 Double

java不会将int自动转换为boolean。所以if(intNum){...}不会通过编译!

基本类型对应的包装器类,使得可以在堆中创建一个非基本对象。用来表示对应的基本类型。

 所有数值类型都是有符号的。

高精度数字

BingInteger 和 BigDecimal

类型转换

float或double转为int型时,会截尾而不是四舍五入!如 float a=0.7;(int)a会得到0.

double%10 不是整数!!!!!

void IntToBytes(){
		int x=257;
		byte[] b2=new byte[2];
		b2=new byte[2];
		b2[0]=(byte)x;//溢出是不做检查的  c#会
		b2[1]=(byte)(x>>8);
		//此时b2为 [1,1]=2的8次方+2的1次方=257
	}

long转int

这样转是不合理的,如果真的要转,可能发生范围溢出,比如一个long类型正数转为int后就变成负的了,它是不会有任何异常的。


结构完全一样的不同名字的类也不能互转。

public class A {
	int x,y;
	public static void main(String[] args) {
		Object x=new A();
		B z=(B)x;//Exception in thread "main" java.lang.ClassCastException: A cannot be cast to B
				//at A.main(A.java:8)
	}
}
 class B {
	 int x,y;
}


数组

C中为了提高运行效率,不检查数组下标越界,程序就可以跑得快。

java永远都做越界检查。

作用域

C++中,变量作用域由花括号的位置决定。java与此既有联系又有区别。

相同之处:变量作用域由花括号的位置决定。

不同之处:



目录
相关文章
|
2月前
|
存储 C语言
引用共用体变量的方式
引用共用体变量的方式
17 2
|
2月前
|
C语言 C++
结构体变量的初始化和引用
结构体变量的初始化和引用
15 1
|
2月前
|
存储
关于结构体变量的初始化和引用
在编程中,结构体是一种复合数据类型,它允许我们将多个不同类型的数据项组合成一个单一的数据结构。通过定义结构体,我们可以创建具有多个属性的数据类型,以更好地组织和处理复杂的数据。本文将介绍结构体变量的初始化和引用方法,并附上相应的代码示例
17 1
|
1月前
|
编译器 C++
C++ 解引用与函数基础:内存地址、调用方法及声明
C++ 中的解引用允许通过指针访问变量值。使用 `*` 运算符可解引用指针并修改原始变量。注意确保指针有效且不为空,以防止程序崩溃。函数是封装代码的单元,用于执行特定任务。理解函数的声明、定义、参数和返回值是关键。函数重载允许同一名称但不同参数列表的函数存在。关注公众号 `Let us Coding` 获取更多内容。
138 1
|
4月前
|
Shell
变量的定义和引用
变量的定义和引用。
32 0
|
10月前
|
C++
C++的引用 拷贝赋值和引用赋值
C++的引用 拷贝赋值和引用赋值
169 0
声明了一个数组变量 myList
声明了一个数组变量 myList
69 0
全局变量的声明
全局变量的声明
129 0
|
Go Python
Go-变量与常量详解(声明、初始化、匿名变量、作用域等)
Go-变量与常量详解(声明、初始化、匿名变量、作用域等)
67 0
Go-变量与常量详解(声明、初始化、匿名变量、作用域等)
|
人工智能 Java
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)
146 0
变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)