首页 > 编程语言 >《JavaSE》------4.<基础语法(数据类型与变量)>

《JavaSE》------4.<基础语法(数据类型与变量)>

时间:2024-07-13 18:31:00浏览次数:10  
标签:变量 int double 数据类型 long ------ JavaSE byte 字节

包含java注释,标识符,关键字,数据类型与变量,Ascii码与Unicode码,类型转换....

语言只是工具,不能决定你好不好找工作,决定你好不好找工作的是你的能力!!!!!

学历本科及以上就够用了!!!!!!!!!!!!!!!!!!!!!!!!!!!!

目录

一、注释

二、标识符

三、关键字

四、数据类型与变量

4.1字面常量

4.1.1字面常量的分类

4.2 数据类型

4.2.1数据类型的分类

①基本数据类型

字节的剖析:

②引用数据类型

字符串类型

1. int 转成 String

2. String 转成 int

4.3变量

4.3.1变量的定义:

整型变量

1.默认整型变量(int)

2.长整型变量(long)

3.短整型变量(short)

4.字节型变量(byte)

浮点型变量

1.双精度浮点型

2.单精度浮点型

字符型变量

ASCII码字符集与Unicode码字符集

布尔型变量

4.4 类型转换

4.4.1 自动类型转换(隐式)

4.4.2 强制类型转换(显式)

4.5 类型提升

总结:​​​​​​​


一、注释

1.单行注释://注释内容       

  快捷键:Ctrl+/         

2.多行注释:/*注释内容*/          .  

 快捷键:Ctrl+Shift+/   

3.文档注释:/**文档注释*/(常见于方法和类之上描述方法和类的作用),可以被javadoc工具解析,生成一套以网页文件形式体现的程序说明文档

 快捷键:/**+回车

注意:①多行注释不能嵌套使用

           ②不论是单行还是多行注释,都不参与编译,即编译之后生成的.class文件中不包含                   注释信息

二、标识符

标识符:程序中我们给类名、方法名或者变量所取的名字。

取名规则:

1.标识符中可以包含:字母、数字以及 下划线和 $ 符号等等。

注意:标识符不能以数字开头,也不能是关键字,且严格区分大小写。
 

类名:每个单词的首字母大写(大驼峰)

方法名:首字母小写,后面每个单词的首字母大写(小驼峰)

变量名:与方法名规则相同

三、关键字

关键字:关键字是由Java语言提前定义好的,有特殊含义的标识符,或者保留字。

public、class以及static等颜色会发生变化,将这些具有特殊含义的标识符称为关键字。

Java中关键字有很多,这里给大家列出来一部分

1.定义访问权限修饰符的关键字
private

protected

public

2.定义类,函数,变量修饰符的关键字

abstract

final

static

synchronized

3.定义类与类之间关系的关键字

extends

implements

4.定义建立实例及引用实例,判断实例的关键字

new

this

super

instanceof

5.异常处理的关键字

try

catch

finally

throw

throws

6.用于包的关键字

package

import

7.其他修饰符关键字

native

strictfp

transient

volatile

assert

​​​​​​​

四、数据类型与变量

4.1字面常量

常量:即程序运行期间,固定不变的量称为常量

4.1.1字面常量的分类

1. 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。

2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000

3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49

4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’、‘1’

5. 布尔常量:只有两种true和false

6. 空常量:null

4.2 数据类型

4.2.1数据类型的分类

①基本数据类型

②引用数据类型

①基本数据类型

基本数据类型我们记四类八种

四类:整型、浮点型、字符型、布尔型

八种:

​​​​​​​

注:

1.不论16位还是32位系统,int都占4字节,double都占8字节。

2.整型和浮点型都带符号

3.整型默认为int,浮点型默认为double

4.字符串属于引用类型

字节的剖析:

字节是计算机中表示空间大小的基本单位.

计算机使用二进制表示数据.

我们认为 8 个二进制位(bit) 为一个字节(Byte).

我们平时的计算机为 8GB 内存, 意思是 8G 个字节.

其中

1KB = 1024 Byte,

1MB = 1024 KB,

1GB = 1024 MB.

所以 8GB 相当于 80 多亿个字节.

②引用数据类型
字符串类型

java中使用string类定义字符串类型:

public static void main(String[] args) {
    String s1 = "hello";
    String s2 = " world";
    System.out.println(s1);
    System.out.println(s2);
    System.out.println(s1+s2);// s1+s2表示:将s1和s2进行拼接
}

在有些情况下,需要将字符串和整形数字之间进行转换:

1. int 转成 String
int num = 10;
// 方法1
String str1 = num + "";  
// 方法2
String str2 = String.valueOf(num);
2. String 转成 int
String str = "100";
int num = Integer.parseInt(str);

4.3变量

变量:就是经常改变的内容,在Java程序中,称为变量。

而数据类型就是用来定义不同种类变量的。

4.3.1变量的定义:

数据类型 变量名 = 初始值;

eg:

int a = 10;  // 定义整形变量a,a是变量名也称为标识符,该变量中放置的值为10



double d = 3.14;         //定义浮点型变量



char c = 'A';            //定义字符型



boolean b = true;        //定义布尔型



注:java中以分号 ; 用来结束语句。用作一段语句的结尾。



a = 100;            //可以对定义好的变量进行修改。



int a1 = 10, a2 = 20, a3 = 30;    //可以在一行可以定义多个相同类型的变量

整型变量

1.默认整型变量(int)
int a = 10;  

除了上述方式定义变量。在整型变量的应用中,我们还能利用包装类。

来表示 int型变量所能表示的范围:Integer.MIN_VALUE ~ Integer.MAX_VALUE

我们可以用sout(System.Out.println的缩写)来打印试试。

int最小值

System.Out.println(Integer.MIN_VALUE);

int最大值

System.Out.println(Integer.MAX_VALUE);

输出如下:

注:

1.int赋值不能超过int的范围

如:int d = 12345678901234;

// 编译时报错,初值超过了int的范围: -2^31 ~ 2^31-1

2.变量在使用之前必须要赋初值,否则编译报错。

3.int不论在何种系统下都是4个字节

4. 推荐int a = 10;定义,如果没有合适的初始值,可以设置为0

5.int的包装类型为 Integer

2.长整型变量(long)

long b = 10;   // long定义的长整型变量

long c = 10L; // 为了区分int和long类型,一般建议:long类型变量的初始值之后加L或者l long d = 10l; // 一般更加以加大写L,因为小写l与1不好区分

// long型变量所能表示的范围:Long.MIN_VALUE ~ Long.MAX_VALUE

这个数据范围远超过 int 的表示范围. 足够绝大部分的工程场景使用.

System.Out.println(Long.MIN_VALUE);

System.Out.println(Long.MAX_VALUE);

输入如下:

注:

1. 长整型变量的初始值后推荐再加L

2. 长整型不论在那个系统下都占8个字节

3. 长整型的表示范围为: -2^63 ~ 2^63-1

4. long的包装类型为Long

3.短整型变量(short)

与长整型变量差不多,就不多说明了。大家可以类比。

short a = 10;

注:

1. short在任何系统下都占2个字节

2. short型变量所能表示的范围:Short.MIN_VALUE ~ Short.MAX_VALUE

也就是

(-2^15)~(2^15-1)

3. 使用时注意不要超过范围(一般使用比较少)

4. short的包装类型为Short

4.字节型变量(byte)

byte b = 10;

注意事项:

1. byte在任何系统下都占1个字节

2. byte的范围是:Byte.MIN_VALUE ~ Byte.MAX_VALUE

也就是

-2^7 ~ 2^7-1

就是

-128 ~ 127

3. 字节型的包装类型为Byte

思考:byte、short、int、long都可以定义整形变量,为什么要给出4中不同类型呢?

这就好比买衣服时的尺码:为了适应不同时期的需求不同而使用不同的整型变量。

浮点型变量

1.双精度浮点型

double d = 3.14;

int a = 1;

int b = 2;

System.out.println(a / b);   // 实际输出 0

double num = 1.1;

System.out.println(num * num);  // 输出1.21吗?    

// 实际执行结果

1.2100000000000002

注:

1.在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)。

2.. double在任何系统下都占8个字节

3.. 浮点数与整数在内存中的存储方式不同,不能单纯使用2^n的形式计算

4. double的包装类型为Double

5. double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。

6.双精度浮点型的范围:有范围,但是一般不关注

Double.MIN_VALUE输出的是最小值。但它不是负数

4.9E-324是一个科学计数法:

代表(4.9 乘以 10^(-324))可以近似看成是一个无穷小的数字。

这是双精度浮点数(double precision floating point number)在计算机科学中的最小正数。

而1.7976931348623157E308 表示一个非常大的数字,用科学计数法表示,

即 (1.7976931348623157 乘以 10^308)。

这是双精度浮点数(double precision floating point number)在计算机科学中的最大值。

2.单精度浮点型

float num = 1.0f;    // 写作 1.0F 也可以

注:

1.float 类型在 Java 中占四个字节

2.同样遵守 IEEE 754 标准. 由于表示的数据精度范围较小, 一般在工程上用到浮点数都优先考虑 double, 不太推荐使用 float.

3.float的包装类型为Float。

4.单精度浮点型的范围:有范围一般不关注。

解释与double类似。

字符型变量

char c1 = 'A';    // 大写字母

char c2 = '1';    // 数字字符

char c3 = '祁';   //汉字字符

注意:

ASCII码字符集与Unicode码字符集​​​​​​​

在 C 语言中使用

ASCII 表示字符,(0~127总共表示2^7个字符)

前128个字符(0-127)是标准ASCII码,使用7位二进制数表示;

另外128个字符(128-255)是扩展ASCII码,使用8位二进制数表示。

而 Java 中使用

Unicode 表示字符.(0~65535总共表示2^16个字符) 因此一个字符占用两个字节, 表示的字符种类更多, 包括中文,我们可以理解为Unicode 表示的字符 ASCII 表示的字符多,并且Unicode表示的字符包含ASCII码表示的字符。且前0~127个数字表示的字符是一样的。

1.java中char类型是2个字节,而c语言中char类型只占1个字节。是有区别的

2.一个汉字是2个字节,所以可以定义一个字符汉字也可以进行输出。(Unicode码定义了汉字)

3.char没有负数。范围是0~65535(2^16-1)

4.java中的字符可以存放整型。计算机中的字符本质上是一个整数.

5.Java 中使用 单引号 + 单个字母 的形式表示字符字面值

6. char的包装类型为Character

布尔型变量

boolean b = true;

b = false;

注:

1.布尔型变量只有两种取值,就是true表示真,false表示假

2.Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.

3. Java虚拟机规范中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令,在Oracle公司的虚拟机实现中,boolean占1个字节。

4. boolean的包装类型为Boolean。

4.4 类型转换

4.4.1 自动类型转换(隐式)

代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。

特点:数据范围小的转为数据范围大的时会自动进行。

System.Out.println(1024);   // 整型默认情况下是int

System.Out.println(3.14);   // 浮点型默认情况下是double

int a = 100;

long b = 10L;

b = a;   // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值。

a = b;   // 编译报错,long的范围比int范围大,会有数据丢失,不安全

float f = 3.14F;

double d = 5.12;

d = f; // 编译器会将f转换为double,然后进行赋值

f = d; // double表示数据范围大,直接将float交给double会有数据丢失,不安全

byte b1 = 100;  // 编译通过,100没有超过byte的范围,编译器隐式将100转换为byte

byte b2 = 257;  // 编译失败,257超过了byte的数据范围,有数据丢失

总结:数据范围小的转为数据范围大的时会自动进行。反之会编译报错,数据不安全。需要进行强制类型转换才可以。

4.4.2 强制类型转换(显式)

当进行操作时,代码需要经过一定的格式处理,不能自动完成。

特点:数据范围大的到数据范围小的。

int a = 10;

long b = 100L;

b = a;        // int-->long,数据范围由小到大,隐式转换。编译通过。

a = (int)b;   // long-->int, 数据范围由大到小,需要强转,在b前面加(int)否则编译失败

float f = 3.14F;

double d = 5.12;

d = f;        // float-->double,数据范围由小到大,隐式转换,编译通过。

f = (float)d; // double-->float, 数据范围由大到小,需要强转d前面加(float),否则编译失败

a = d;   // double-->int 报错,类型不兼容

a = (int)d;   // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃

boolean flag = true;

a = flag;   // 编译失败:类型不兼容flag = a;   // 编译失败:类型不兼容

注意事项:

1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型

2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失

3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查

4. 强制类型转换不一定能成功,不相干的类型不能互相转换

4.5 类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。

1. int与long之间:int会被提升为long

int a = 10;

long b = 20;

int c = a + b;  // 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据

long d = a + b;  // 编译成功:a + b==>int + long--->long + long 赋值给long

2. byte与byte的运算

byte a = 10;

byte b = 20;

byte c = a + b;

System.out.println(c);

// 编译报错

Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失                

byte c = a + b;

结论: byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.

注:由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short这种低于 4 个字节的类型, 会先提升成 int, 再参与计算.

因此正确的写法是:

byte a = 10;

byte b = 20;

byte c = (byte)(a + b);

System.out.println(c)

总结:

1.不同类型的数据混合运算, 范围小的会提升成范围大的.

2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.

​​​​​​​

标签:变量,int,double,数据类型,long,------,JavaSE,byte,字节
From: https://blog.csdn.net/m0_73456341/article/details/130833653

相关文章

  • SQLAlchemy 执行原生 SQL 语句
    在使用SQLAlchemy进行数据库操作时,虽然ORM提供了强大的模型映射功能,但有时候直接使用原生SQL语句可能更加简单直率,甚至性能更优。下面我们来看一下如何在SQLAlchemy中执行原生的SQL语句。执行原生SQL语句的步骤构造SQL语句调用session中的execute方法执行,得......
  • Eagle 4.0 更新了哪些功能,值得购买吗?
    这个全新的版本带来了一系列重磅级别的更新,包括全新的「插件系统」、「全新的UI风格」以及「AI工具」等。所有这些,都是为了提供给用户更加优质的使用体验,让工作的流程更加流畅,更加高效。我们的团队始终倾听用户的声音,通过不断的优化和改进,我们希望每一次的更新都能带给用户......
  • Netcode for Entities里如何对Ghost进行可见性筛选(1.2.3版本)
    一行代码省流:SystemAPI.GetSingleton<GhostRelevancy>()当你需要按照区域、距离或者场景对Ghost进行筛选的时候,NetcodeforEntities里并没有类似FishNet那样方便的过滤方式,需要获取一个过滤专用的组件:GhostRelevancy。这个结构的内容不多,但功能很强大,但用起来很累,但概念其实挺......
  • Start11 V2(Windows 开始菜单美化工具 )值得购买吗?
    去年底Stardock正式推出了Start11V2,与第一代Start11相比,新版带来了超过50项的新特性,其中包括:全新的开始菜单样式、应用图标分组/换色、固定任意程序/文件/文件夹到任务栏、配置备份还原……开始菜单的新样式在V2版本中,Start11由原有的Win7、现代、Wi......
  • 深耕一个领域存在的风险?
    深耕一个领域存在的风险?我们常常听到:要深耕一个领域/行业。对于个人来说是选择一份职业深耕,还是在多个领域尝试?​首先看看人才分类人才的分类可以归纳为三种类型,I型,T型,X型,三种类型简称ITX“I”型人才“I”型人才可以分为专才或者通才。横向放置“—”就是通才,纵向放......
  • containerd 容器基础环境组件的搭建
    1基础环境说明(1)本次所有部署软件版本说明软件名称版本号操作系统内核(后续升级为lt-5.4.278)CentOS7.9.2009(3.10.0-1160.el7)1c1GB20GBCentOS-7-x86_64-Minimal-2009.isocontainerdv1.6.6cfsslv1.6.1cniv1.1.1crictlv1.24.2nerdctl1.7.6......
  • 福昕高级PDF编辑器专业版2024.2.0安装教程
    1、下载安装包2、双击安装程序进行安装3、修改安装位置,点击安装4、等待安装5安装完成,一定不能立即启用不要点击立即启用6、将patch的应用程序放到安装目录下面,双击启动7、点击应用8、执行完成,打开软件就可以用了如遇到福昕高级PDF编辑器失败,提示:本机已安装......
  • 【JavaScript】聊一聊js中的浅拷贝与深拷贝与手写实现
    前言什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:基本数据类型(6种)String、Number、Object、Boolean、null、undefined、symbol(ES6+)引用数据类型Object(function、Array、正则表达式等皆......
  • 【网页前端设计HTML】水平线、div、自闭合标签及块元素和行内元素、特殊符号
    使用所分享的知识,还不能够完成下图的设计,观察一下,我们还有什么知识没讲呢?聪明的你一定能看到:一条长长的线分隔开每一个科目,但是这条长线怎么表示,用什么标签呢?一、水平线标签我来告诉你,这条长长的线,我们称之为“水平线”。在HTML中,我们可以使用“hr标签”来实现一条水......
  • 世界能源统计年鉴(2005-2023年)
    数据年限:2005-2023年,包含2023年、23024年世界能源展望报告数据格式:pdf、excel数据内容:BP世界能源统计年鉴,全球世界各国地区石油天然气电力等生产消费情况。未括号说明的,均为中文版,英文版表格可对照中文版来看。......