目录

--- 基本数据类型

--- 变量类型

基本数据类型

  • 变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
  • 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。

  • Java 的两大数据类型:

    • 内置数据类型:Java语言提供了八种基本类型。六种数字类型(四个整数型(byte, short, int, long),两个浮点型(float, double)),一种字符类型(char),还有一种布尔型(boolean)。各类数据类型范围查询:

      public class PrimitiveTypeTest {
      public static void main(String[] args) {
      // byte
      System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
      System.out.println("包装类:java.lang.Byte");
      System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
      System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
      System.out.println(); // short
      System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
      System.out.println("包装类:java.lang.Short");
      System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
      System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
      System.out.println(); // int
      System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
      System.out.println("包装类:java.lang.Integer");
      System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
      System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
      System.out.println(); // long
      System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
      System.out.println("包装类:java.lang.Long");
      System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
      System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
      System.out.println(); // float
      System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
      System.out.println("包装类:java.lang.Float");
      System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
      System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
      System.out.println(); // double
      System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
      System.out.println("包装类:java.lang.Double");
      System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
      System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
      System.out.println(); // char
      System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
      System.out.println("包装类:java.lang.Character");
      // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
      System.out.println("最小值:Character.MIN_VALUE="
      + (int) Character.MIN_VALUE);
      // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
      System.out.println("最大值:Character.MAX_VALUE="
      + (int) Character.MAX_VALUE);
      }
      }

      数值类型的基本类型的取值范围

      实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

Java 里使用 long 类型的数据一定要在数值后面加上 L,否则将作为整型解析。

    • 引用数据类型:在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,eg: Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。

      • 对象、数组都是引用数据类型。

      • 所有引用类型的默认值都是null。

      • 一个引用变量可以用来引用与任何与之兼容的类型。

  • Java 在程序运行时,常量 是 不会被修改的量( 在 Java 中使用 final 关键字来修饰常量),声明方式和变量类似:
    final double PI = 3.1415927; //通常使用大写字母表示常量

    byte、int、long、和 short 都可以用 十进制、16进制以及8进制的方式来表示。当使用常量的时候,前缀0表示8进制,而前缀0x代表16进制。例如:

    int decimal = ;
    int octal = ;
    int hexa = 0x64;

    字符串常量 和 字符常量 都可以包含任何Unicode字符。例如:char a = '\u0001';

    符号    字符含义
    \n 换行 (0x0a)
    \r 回车 (0x0d)
    \f 换页符(0x0c)
    \b 退格 (0x08)
    \s 空格 (0x20)
    \t 制表符
    \" 双引号
    \' 单引号
    \\ 反斜杠
    \ddd 八进制字符 (ddd)
    \uxxxx 16进制Unicode字符 (xxxx)

    Java语言支持一些特殊的转义字符序列

  • 自动类型转换:整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。转换从低级到高级。
    低  ------------------------------------>  高
    byte,short,char—> int —> long—> float —> double

    数据类型转换必须满足如下规则:必须满足转换前的数据类型的位数要低于转换后的数据类型.

    • 1. 不能对 boolean 类型进行类型转换。

    • 2. 不能把对象类型转换成不相关类的对象。

    • 3. 在把 容量大 的类型转换为 容量小 的类型时必须使用 强制类型转换。

      /* 强制类型转换
      1. 条件是转换的数据类型必须是兼容的。
      2. 格式:(type)value type是要强制类型转换后的数据类型 实例: */
      int i1 = ;
      byte b = (byte)i1; //强制类型转换为byte
    • 4. 转换过程中可能导致 溢出 或 损失精度。eg:

      int i =;
      byte b = (byte)i; //因为byte类型时8位,最大值为127,所以当强制转换为int类型值128时候就会导致溢出。
    • 5. ****** 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入 *****.eg:
      (int)23.7 == ;
      (int)-45.89f == -
    • 6. 强制类型转换: 条件是转换的数据类型必须是兼容的。格式:(type)value, 其中 type 是要强制类型转换后的数据类型,eg:
      public class QiangZhiZhuanHuan{
      public static void main(String[] args){
      int i1 = ;
      byte b = (byte)i1;//强制类型转换为byte
      System.out.println("int强制类型转换为byte后的值等于"+b); //结果:int强制类型转换为byte后的值等于123
      }
      }
    • 7. 隐含强制类型转换
      • 1. 整数的默认类型是 int。

      • 2. 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f.

变量类型

在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下:

type identifier [ = value][, identifier [= value] ...];  //type为数据类型,identifier是变量名

Java语言支持的变量类型有:

public class Variable{
static int allClicks=; // 类变量
String str="hello world"; // 实例变量
public void method(){
int i =; // 局部变量
}
}
  • 类变量(静态变量,易用于 常量 定义):独立于方法之外的变量,用 static 修饰。

    • 类变量 也称为 静态变量,在类中以 static 关键字声明,但必须在方法构造方法和语句块之外。
    • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
    • 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
    • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
    • 静态变量在程序开始时创建,在程序结束时销毁。
    • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
    • 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
    • 静态变量可以通过:ClassName.VariableName的方式访问。
    • 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。
      import java.io.*;
      
      public class Employee {
      private static double salary; //类变量salary 是静态的私有变量
      public static final String DEPARTMENT = "开发人员"; // 类变量,static final 修饰,变量名一般大写,表明DEPARTMENT是一个常量
      public static void main(String args[]){
      salary = ;
      System.out.println( DEPARTMENT + "平均工资: " + salary);
      }
      }
      注意:如果其他类想要访问该变量,可以这样访问:Employee.DEPARTMENT
    • 类变量赋值方法
      • 无final修饰,可 声明时赋值,构造器中赋值,静态语句块或静态方法赋值;
      • 有final修饰,可 声明时赋值,声明与赋值分开可在静态语句块中赋值。
        public class StaticTest {
        private static int staticInt = ; //类变量,声明时赋值
        private int random = ; //成员变量 public StaticTest() {
        staticInt++;
        random++;
        } public static void main(String[] args) {
        System.out.println("类变量与对象变量的值变化");
        StaticTest test = new StaticTest();
        System.out.println(" 实例1:staticInt:" + test.staticInt + "----random:" + test.random);
        StaticTest test2 = new StaticTest();
        System.out.println(" 实例2:staticInt:" + test.staticInt + "----random:" + test.random);

           System.out.println("静态变量赋值");
        System.out.println(" 静态语句块起作用:" + A.staticA);
        A a = new A();
        System.out.println(" 构造器起作用:" + a.staticA);
        a.toChange();
        System.out.println(" 静态方法1起作用:" + A.staticA);
        a.toChange2();
        System.out.println(" 静态方法2起作用:" + A.staticA);
        System.out.println("常量赋值");
        System.out.println(" 静态语句赋值:" + B.staticB);
        }
        } class A {
        public static String staticA ="A" ; static{ staticA ="A1"; } //静态语句块修改值 public A(){ staticA ="A2"; } //构造器修改值 //静态方法起作用
        public static void toChange(){ staticA ="A3"; }
        public static void toChange2(){ staticA ="A4"; }
        } class B {
        public static final String staticB ; // 声明与赋值分离
        static{ staticB ="B"; } //在静态语句中赋值
        }
  • 实例变量:独立于方法之外的变量,不过没有 static 修饰
    • 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
    • 当一个对象被实例化之后,每个实例变量的值就跟着确定;
    • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
    • 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
    • 实例变量可以声明在使用前 或 使用后;
    • 访问修饰符可以修饰实例变量;
    • 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把 实例变量 设为 私有。通过使用访问修饰符可以使实例变量对子类可见;
    • 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
    • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。
      import java.io.*;
      public class Employee{
      public String name; // 公有 实例变量,对子类可见
      private double salary; // 私有 实例变量,仅在该类可见
      public Employee (String empName){ //在构造器中对name赋值
      name = empName;
      }
      public void setSalary(double empSal){ //设定salary的值
      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(); //访问
      empOne.printEmp();
      }
      }
  • 局部变量:类的方法中的变量
    • 局部变量声明在方法、构造方法或者语句块中;
    • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
    • 访问修饰符不能用于局部变量;
    • 局部变量只在声明它的方法、构造方法或者语句块中可见;
    • 局部变量是在栈上分配的。
    • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。示例:
      package com.runoob.test;
      
      public class Test{
      public void pupAge(){
      int age = ; // 局部变量
      age = age + ;
      System.out.println("小狗的年龄是: " + age);
      } public static void main(String args[]){
      Test test = new Test();
      test.pupAge();
      }
      }
Java 中 静态变量(类变量)实例变量 区别
静态变量属于类,该类在不产生对象时,也可以通过类名就可以调用静态变量。
实例变量属于该类的对象,必须产生该类对象,才能调用实例变量。
在程序运行时的区别:
实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量;
静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。 总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用!!

eg: 对于下面的程序,无论创建多少个实例对象,永远都只分配了一个 staticInt 变量,并且每创建一个实例对象,这个 staticInt 就会加 1;但是,每创建一个实例对象,就会分配一个 random,即可能分配多个 random ,并且每个 random 的值都只自加了1次。

public class StaticTest {
private static int staticInt = ;
private int random = ; public StaticTest() {
staticInt++;
random++;
System.out.println("staticInt = "+staticInt+" random = "+random);
} public static void main(String[] args) {
System.out.println(staticInt); //类变量:无需创建类对象(即,无需实例化),就可以直接访问
StaticTest test = new StaticTest();
StaticTest test2 = new StaticTest();
}
} /*输出结果为:
staticInt = 3 random = 3
staticInt = 4 random = 3 */

Pre-article: Java 学习(3):java 对象和类

Next:Java 学习(5):修饰符 运算符

Java 学习(4):基本数据类型,变量类型的更多相关文章

  1. java学习(二)--- 变量类型

    变量声明 type identifier [ = value][, identifier [= value] ...] ; 局部变量: 1.局部变量声明在方法.构造方法.语句块中 2.局部变量在方法. ...

  2. 1 Java学习之 基本数据类型

    1. 基本概念 数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式.接触每种语言的时候,都会存在数据类型的认识,有复杂的.简单的,各种数据类型都需要在学习 ...

  3. Java入门 - 语言基础 - 06.变量类型

    原文地址:http://www.work100.net/training/java-variable-type.html 更多教程:光束云 - 免费课程 变量类型 序号 文内章节 视频 1 概述 2 ...

  4. Java学习之基本数据类型

    基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型.它们是我们编程中使用最频繁的类型.java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化. 1. Java ...

  5. Java学习6——基本数据类型及其转换

    Java常量: Java的常量值用字符串表示,区分不同的数据类型 整型常量123.浮点型常量3.14.字符常量'a'.逻辑常量true.字符串常量"helloworld". ps: ...

  6. 【原】Java学习笔记003 - 数据类型

    package cn.temptation; public class Sample01 { public static void main(String[] args) { System.out.p ...

  7. [转]Java虚拟机是如何判断变量类型的

    [原文]https://www.toutiao.com/i6591766777745637891/ 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java ...

  8. Java学习之基本数据类型和引用数据类型区别

    JAVA中分为基本数据类型和引用数据类型区别一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存 ...

  9. Java连载76-基础数据类型包装类型及其方法简介

    一.java中八种基本数据类型对应的包装类型 基本数据类型      包装类型 byte                    java.lang.Byte short                ...

  10. Java学习 (七)基础篇 变量

    变量 变量顾名思义,就是可以变化的量 Java是一种强类型语言,每个变量都必须声明其类型 Java变量是程序中最基本的存储单位,其要素包括变量名.变量类型和作用域 type varName [=val ...

随机推荐

  1. 学JAVA第二十四天,Set集合与StringBuilder

    下面的内容需要慢慢看,因为,我的语言表达能力不是很好 首先说Set把,Set集合是一个无序且不允许重复的集合,而且查找效率也是快的可怕的. 但是,有些时候,我们必须要用储存多个相同的值时,Set也是可 ...

  2. 1. UI Tests简介

    (1) User Interface Testing UI Testing库主要提供了与App中的UI元素进行查找和交互的能力,这使得我们可以通过验证UI元素的状态来测试App是否正常运行.     ...

  3. UVa OJ 494

     Kindergarten Counting Game  Everybody sit down in a circle. Ok. Listen to me carefully. ``Woooooo, ...

  4. linux环境iptables配置

    Linux iptables常用规则 设置一个自己用的表, 允许ping 允许ssh 允许 web 允许mysql 允许 ftp 允许dns查询 其他的拒绝.脚本如下 # Firewall confi ...

  5. 11G RAC环境数据库启动和关闭

    一步启动Oracle (1) 启动整个集群 # ./crsctl start cluster -all -all选项启动整个集群. 不加-all选项只能启动本节点的服务. (2) 启动本节点集群 以下 ...

  6. 解决Homestead yarn , npm run dev, 命令报错问题!

    解决Homestead yarn , npm run dev, 命令报错问题! 2018年06月01日 11:50:51 偶尔发发颠 阅读数:1654    版权声明:本文为博主原创,未经博主同意,不 ...

  7. python基础一 day2 字符串操作

    s.capitalize()  s.upper()  s.lower() s.swapcase()   s.title()  s.center(20,"#")   s.expand ...

  8. xshell通过xftp传输Windows文件到Linux:在输入put后,再摁 TAB 键,可显示当前文件夹的文件

    在输入put后,再摁 TAB 键,可显示当前文件夹的文件 sftp:/home/yan> put $Recycle.Bin\              BluestacksCN\         ...

  9. jquery点击tr换背景颜色

    jquery点击tr换tr的背景颜色,table的id为db-list1jQuery(function() { jQuery("#db-list1 tr").click( func ...

  10. C# string补位

    参考:https://www.cnblogs.com/zhangqs008/archive/2012/02/01/2341078.html //1.1.左补位 "; , 'A'); //1. ...