摘要:对象数组都是引用数据类型。低高数据类型转换必须满足如下规则不能对类型进行类型转换。强制类型转换条件是转换的数据类型必须是兼容的。声明变量的基本格式如下格式说明为数据类型。但为了对类的使用者可见,大多数静态变量声明为类型。
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
Java 的两大数据类型:
内置数据类型
引用数据类型
一、内置数据类型Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
数字类型:byte,short,int,long,float,double
布尔型:boolean,只有两个取值:true 和 false;例子:boolean one = true。
字符类型:char,char类型是一个单一的 16 位 Unicode 字符;
最小值是 u0000(即为0);
最大值是 uffff(即为65,535);
char 数据类型可以储存任何字符;
例子:char letter = "A";。
在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
对象、数组都是引用数据类型。
所有引用类型的默认值都是null。
一个引用变量可以用来引用任何与之兼容的类型。
例子:Site site = new Site("Runoob")。
常量在程序运行时是不能被修改的。
在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:
final double PI = 3.1415927;
虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。
自动类型转换整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ------------------------------------> 高 byte,short,char—> int —> long—> float —> double
数据类型转换必须满足如下规则:
1.不能对boolean类型进行类型转换。
2.不能把对象类型转换成不相关类的对象。
3.在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
4.转换过程中可能导致溢出或损失精度,例如:
int i =128; byte b = (byte)i;
因为 byte 类型是 8 位,最大值为127,所以当强制转换为 int 类型值 128 时候就会导致溢出。
5.浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23; (int)-45.89f == -45
自动类型转换
必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
示例:
public class ZiDongLeiZhuan{ public static void main(String[] args){ char c1="a";//定义一个char类型 int i1 = c1;//char自动类型转换为int System.out.println("char自动类型转换为int后的值等于"+i1); char c2 = "A";//定义一个char类型 int i2 = c2+1;//char 类型和 int 类型计算 System.out.println("char类型和int计算后的值等于"+i2); } }
运行结果:
char自动类型转换为int后的值等于97 char类型和int计算后的值等于66
解析:c1的值为字符"a",查ascii码表可知对应的int类型值为97,"A"对应值为65,所以i2=65+1=66。
强制类型转换条件是转换的数据类型必须是兼容的。
格式:(type)value type是要强制类型转换后的数据类型 实例:
public class QiangZhiZhuanHuan{ public static void main(String[] args){ int i1 = 123; byte b = (byte)i1;//强制类型转换为byte System.out.println("int强制类型转换为byte后的值等于"+b); } }
运行:
int强制类型转换为byte后的值等于123隐含强制类型转换
整数的默认类型是 int。
浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。
二、数据类型应用在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:
type identifier [ = value][, identifier [= value] ...] ;
格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。
以下列出了一些变量的声明实例。注意有些包含了初始化过程。
int a, b, c; // 声明三个int型整数:a、 b、c int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值 byte z = 22; // 声明并初始化 z String s = "runoob"; // 声明并初始化字符串 s double pi = 3.14159; // 声明了双精度浮点型变量 pi char x = "x"; // 声明变量 x 的值是字符 "x"。
Java语言支持的变量类型有:
类变量:独立于方法之外的变量,用 static 修饰。
实例变量:独立于方法之外的变量,不过没有 static 修饰。
局部变量:类的方法中的变量。
public class Variable { static int allClicks = 0; // 类变量 String str = "hello world"; // 实例变量 public void method() { int i = 0; // 局部变量 } }局部变量
局部变量声明在方法、构造方法或者语句块中;
局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
访问修饰符不能用于局部变量;
局部变量只在声明它的方法、构造方法或者语句块中可见;
局部变量是在栈上分配的。
局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
实例:
package com.runoob.test; public class Test{ public void pupAge(){ int age = 0; age = age + 7; System.out.println("小狗的年龄是: " + age); } public static void main(String args[]){ Test test = new Test(); test.pupAge(); } }
运行结果:
小狗的年龄是: 7
在以上实例中age是一个局部变量。定义在pupAge()方法中,它的作用域就限制在这个方法中。
实例变量实例变量声明在一个类中,但在方法、构造方法和语句块之外;
当一个对象被实例化之后,每个实例变量的值就跟着确定;
实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
实例变量可以声明在使用前或者使用后;
访问修饰符可以修饰实例变量;
实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。
Employee.java 文件
实例:
import java.io.*; public class Employee{ // 这个实例变量对子类可见 public String name; // 私有变量,仅在该类可见 private double salary; //在构造器中对name赋值 public Employee (String empName){ name = empName; } //设定salary的值 public void setSalary(double empSal){ salary = empSal; } // 打印信息 public void printEmp(){ System.out.println("名字 : " + name ); System.out.println("薪水 : " + salary); } public static void main(String args[]){ Employee empOne = new Employee("RUNOOB"); empOne.setSalary(1000); empOne.printEmp(); } }
以上实例编译运行结果如下:
$ javac Employee.java $ java Employee 名字 : RUNOOB 薪水 : 1000.0类变量(静态变量)
类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外。
无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
静态变量储存在静态存储区。经常被声明为常量,很少多带带使用static声明变量。
静态变量在程序开始时创建,在程序结束时销毁。
与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
静态变量可以通过:ClassName.VariableName的方式访问。
类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。
Employee.java 文件代码:
import java.io.*; public class Employee { //salary是静态的私有变量 private static double salary; // DEPARTMENT是一个常量 public static final String DEPARTMENT = "开发人员"; public static void main(String args[]){ salary = 10000; System.out.println(DEPARTMENT+"平均工资:"+salary); } }
以上实例编译运行结果如下:
开发人员平均工资:10000.0
注意:如果其他类想要访问该变量,可以这样访问 :Employee.DEPARTMENT。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70804.html
摘要:数据类型结构图基本数据类型布尔值数值类型定点类型字符字节短整数整数长整数浮点类型单精度浮点数双精度浮点数引用数据类型类或枚举或接口数组基本数据类型由上图可知,基本数据类型只有种。变量的变量一般有四个基本属性变量名数据类型储存单元变量值。 数据类型结构图 基本数据类型 布尔值 (true / false) 数值类型 定点类型 字符 char 字节 byte 短整数 shor...
摘要:结构体也可以包含结构体,就像内部类访问结构的属性和一样。。我觉得这个需要学下数据结构才能更好理解给数据类型起一个新名字则可以通过对于结构体我可以这样再通过变量名就可以简便的声明结构体变量。文件暂时过了一遍预处理器头文件就是扩展名为的文件。 ...
摘要:是完全面向对象的语言,对象具有状态行为和标识。类一一是具有共同特征和行为的一类事物的统称。受保护的,对同一包内的类和所有子类可见。一种通用的内存池,用于存放所有对象。类级变量又称全局级变量或静态变量,需要使用关键字修饰。 java语言的基本特点 java语言是面向对象的高级程序设计语言,它是编译型的语言,Java语言不使用指针,并提供了自动的垃圾回收机制,使得程序员不必为内存管理而担...
摘要:引用数据类型转换由的继承和向上转型,子类可以很自然地转换为父类对象,即父类类型可以直接引用子类对象,但是子类类型不能直接引用父类对象,需要进行强制转换。但是将功能较弱的类型父类强制转功能较强的对象子类时,就不一定可以行了。 1、引用数据类型转换: 由java的继承和向上转型,子类可以很自然地转换为父类对象,即父类类型可以直接引用子类对象,但是子类类型不能直接引用父类对象,需要进行强制转...
摘要:数据类型中有种简单数据类型也称为基本数据类型和。在中非空字符串,非零数字,任意对象,都被认为。而空字符串,和,,认为是。用于表示整数和浮点数。标识符由数字字母下划线美元符组成,但首字母不能是数字。变量方法对象命名推荐驼峰法。 JavaScript语法 一.语法简介 因为JavaScript语法和Java等语法非常类似。所以只是简单介绍一下。 大小写 JavaScript是大小写敏感的语...
阅读 1038·2021-09-13 10:29
阅读 3389·2019-08-29 18:31
阅读 2633·2019-08-29 11:15
阅读 3011·2019-08-26 13:25
阅读 1368·2019-08-26 12:00
阅读 2293·2019-08-26 11:41
阅读 3376·2019-08-26 10:31
阅读 1488·2019-08-26 10:25