搜索
首页Javajava教程[Java入门笔记]Java语言基础(二):常量、变量与数据类型

常量与变量

什么是常量和变量

常量与变量都是程序在运行时用来存储数据一块内存空间

常量:

常量的值在程序运行时不能被改变,java中声明常量必须使用final关键字。常量还可以分为两种意思:

第1种意思,就是一个值,这个值本身,我们可以叫它常量,举几个例子:

整型常量: 123

实型常量:3.14

字符常量: 'a'

逻辑常量:true、false

字符串常量:"helloworld"

这只是说法的问题,比如7这个数,我们就可以说“一个int类型的常量7 ”

第2种意思,表示不可变的变量,这种也叫常量,从语法上来讲也就是,加上final,使用final关键字来修饰某个变量,然后只要赋值之后,就不能改变了,就不能再次被赋值了

//声明一个int类型的常量i final int i = 1; //声明一个String对象类型的常量s,"Hello"字符串也是一个常量 final String s = "Hello";

需要注意的是:常量在声明时必须要给这个常量赋一个值。

变量:

是程序运行时用来存储数据的一块内存空间,是程序中最基本的存储单元,我们可以使用变量名访问变量。

Java变量的分类:

按声明位置分:

  局部变量

  成员变量

方法的参数是局部变量。

public class Test{   int i1 = 1;  //成员变量     public class static main(String[] args){  //args是方法的参数,所以也是局部变量     int i2 = 2;  //局部变量   } }

按数据类型分:

  基本数据类型变量

  引用数据类型变量

public class Test{   int i = 1;  //基本数据类型变量   String s = new String();  //引用数据类型 }

 

使用变量的步骤:

第一步:声明一个变量——根据类型在内存中开辟空间第二步:赋值——将数据存入空间        第三步:使用变量——得到内存中的数据使用

我们使用变量前必须要先声明和赋值,声明和赋值可以分开,也可以结合为一步;

成员变量在声明时如果没有为其显式赋值,则会为其分配一个默认值。

public class Test{   int i3;  //如果是成员变量,系统会为其默认分配一个值0
  public static void main(String[] args){     int i1;  //声明     i1 = 1;  //赋值     int i2 = 2;  //声明的同时为其赋值,2这个值也叫“直接量”     System.out.PRintln(i1);  //使用,将变量的值输出到Java控制台   } }

 

基本数据类型

Java是一种强类型语言,所谓强类型,就是每个变量表达式在编译时就必须要有一个确定的数据类型。Java数据类型分为两大类:基本类型和引用类型。

引用数据类型为:类、接口、数组。

Java中的基本数据类型分为四类八种,分别为:

基本数据类型

   

数值型

   

字符类型char

 

占用空间:2字节

   

布尔类型boolean

 

占用空间:1位

   

整数类型

   

浮点类型

   

字节byte

   

短整型short

   

整型int

   

长整型long

   

单精度型long

   

双精度型double

   

1字节

   

2字节

   

4字节

   

8字节

   

4字节

   

8字节

   

-128~127

   

-32768~32767

   

-2147483648

~2147483647

   

-9223372036854774808

~9223372036854774807

   

-3.403E38

~3.403E38

   

-1.798E308

~1.798

   

整数类型

Java整形常量默认为int类型,声明long类型常量需要在后面加上L

Java语言整形常量的3种表现形式

 

十进制整数:如12,-15,0

八进制整数:要求以0开头,如012

十六进制数:要求以0x或0X开头,如0x12

注:因为Java中可以使用十六进制方式赋值,因此类似于十进制10与十六进制A在内存中没有区别。

Java7之后Java中也可以使用二进制的方式为整形赋值。

byte b1 = 127;  //正确 byte b2 = 128; //错误,超出范围 short = b1;  //正确,将另外一个变量的值赋给该变量,并且没有超出范围 int i1 = 12;//正确 int i2 = 012;  //正确 int i3 = 0x12;  //正确 System.out.println(i2);  //输出10,因为i2是以8进制方式赋值的 System.out.println(i3);  //输出18,因为i3是以16进制方式赋值的 long lo = 2147483648L;  //long类型声明需要加上L

 

 

浮点类型

Java浮点类型常量有两种表现形式:

十进制数形式:例如3.14   314.0   .314

科学计数法形式:如3.14e2   3.14E2   3.14E-2

Java浮点类型常量默认double,如果要声明一个常量为float则需要在后面加F

因为精度问题,因此不要用浮点类型做等于比较

float f1 = 123; float f2 = 123.4F; double d1 = 1234.5; double d = 3.141_592_65_36  //正确,java7后为了使比较长的数据较有可读性,可以在数字之间使用下划线

 

 

 字符类型

字符类型是单引号括起来的单个字符

Java字符采用Unicode编码,每个字符占两个字节,因而可以用十六进制编码形式表示,如 char c = '\u0061';

允许使用转义字符'\'将其后字符转为其他含义,如 char c = '\n';换行

Java 中常用的转义字符

85.jpg

char c1 = '你';  //正确char c2 = '你好';  //错误char c3 = '\u9999';  //正确System.out.println(c3);  //输出'香'

 

 布尔类型

用来存储"真","假"的类型,只有true和false两种值。

boolean b = true;

 

 数据类型的转换

 精度排序:(由低到高)  

Byte < short < int < long < float < double

由低到高转换时系统会自动转换;高精度转换为低精度时,会有精度损失,须强制转换;运算时,不同类型会自动转换为高精度类型。

byte b = 127;short s = b;  //会自动转换为shortb = (byte)s;  //不会自动转换,需要强制转换

double常量转换为float常量产生溢出时不能转换

public class Test {    
   public static void main(String[] args) throws Exception {        double d = 12222222222222222222222222222222222222222222222222222.3;        float f = (float) d;  //d的值已经超出了float的范围,所以转换会“溢出”,但是编译不会报错
       System.out.println(f);  //因为产生了溢出,所以输出“Infinity”    }

}

系统在运算时会将数值自动转换为int型,将运算结果赋给原来的类型时需要进行强制转换。

byte b1 = 1;byte b2 = (byte) (b1 + 2);  //数值运算时会自动转换为int,所以计算出结果后将值再赋给byte类型变量b2时需要强制转换

如果常量值超出了默认类型时,必须在后面加大于该默认类型的数值类型开头字母,如 long num=30000000000L; 因为整型类型默认为int,但30000000000在int中放不下,所以要在后面加小写l或大写L,转换为long型。

(数据类型名)要转换的变量或值  与  要转换的变量或值+转换符  这两种转换方式有本质上的区别,前一种表示它在计算机中是他原来的类型,再把它强制转换成现在的类型,后一种表示它一开始在计算机里就已经是转换完成了的这种类型。

long lo = (long)2;long lo2 = 2L;     //这两种声明或转换有本质区别

 以上就是[Java入门笔记]Java语言基础(二):常量、变量与数据类型的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?Mar 17, 2025 pm 05:46 PM

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)?如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存?如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存?Mar 17, 2025 pm 05:44 PM

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?Mar 17, 2025 pm 05:43 PM

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?Mar 17, 2025 pm 05:35 PM

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具