java_java基础语法_java中int 126+ 2-程序员宅基地

技术标签: java笔记  java基础  java变量类型  java  java关键字  

注释

  1. 什么是注释
    简单来说注释就是在程序中对代码进行解释说明的文字,方便自己和其他人理解,查看,不会影响程序的正常执行
  2. 注释有哪些
    单行注释
    // 注释内容只能写一行
    
    多行注释
    /*
    注释内容1
    注释内容2
    */
    
    文档注释
    /**
    注释内容
    注释内容
    */
    

字面量

告诉程序员,数据在程序中的书写格式
字面量分类

字面量类型 说明 实例
整数 不带小数的数字 123,456
小数 带小数的数字 3.1415926
字符 必须使用单引号,且有且只有一个字符 ‘a’,‘b’,‘c’
字符串 必须使用双引号,内容可有可无 " ",“hello world”
布尔 布尔值,表示真和假,只有两个值true和false true,false
一个特殊的值空值null 值为null

变量

变量就是用来储存一个数据的内存区域,(可以理解成盒子),且里面储存的数据可以变化
在这里插入图片描述

变量使用注意事项

  1. 什么类型的变量储存什么类型的值
  2. 同一个范围变量名不能重复
  3. 变量在使用时要有初始值
  4. 变量存在访问范围

数据的存储形式:二进制

计算机底层都是一些数字电路(开关),用开表示0,关表示1,这些0和1的形式就是二进制
数据在计算机底层都是采用二进制储存的

数据以二进制的形式储存在内存中,内存是一个非常精密的部件,包含了上亿个电子元器件,它们很小,达到了纳米级别。这些元器件,实际上就是电路;电路的电压会变化,要么是 0V,要么是 5V,只有这两种电压。5V 是通电,用1来表示,0V 是断电,用0来表示。所以,一个元器件有2种状态,0 或者 1。

我们通过电路来控制这些元器件的通断电,会得到很多0、1的组合。例如,8个元器件有 28=256 种不同的组合,16个元器件有 216=65536 种不同的组合。虽然一个元器件只能表示2个数值,但是多个结合起来就可以表示很多数值了。

我们可以给每一种组合赋予特定的含义,例如,可以分别用 1101000、00011100、11111111、00000000、01010101、10101010 来表示 我、是、马、牛、逼、! 这几个字,那么结合起来 1101000 00011100 11111111 00000000 01010101 10101010 就表示”我是马牛逼!“。

一般情况下我们不一个一个的使用元器件,而是将8个元器件看做一个单位,即使表示很小的数,例如 1,也需要8个,也就是 00000001。
1个元器件称为1比特(Bit)或1位,8个元器件称为1字节(Byte),那么16个元器件就是2Byte,32个就是4Byte,以此类推:
8×1024个元器件就是1024Byte,简写为1KB;
8×1024×1024个元器件就是1024KB,简写为1MB;
8×1024×1024×1024个元器件就是1024MB,简写为1GB。

现在,我们就知道1GB的内存有多少个元器件了。我们通常所说的文件大小是多少 KB、多少 MB,就是这个意思。

单位换算:
1Byte = 8 Bit
1KB = 1024Byte = 210Byte
1MB = 1024KB = 220Byte
1GB = 1024MB = 230Byte
1TB = 1024GB = 240Byte
1PB = 1024TB = 250Byte
1EB = 1024PB = 260Byte
我们平时使用计算机时,通常只会设计到 KB、MB、GB、TB 这几个单位,PB 和 EB 这两个高级单位一般在大数据处理过程中才会用到

数据类型

数据类型就是约束变量储存数据的形式,在java中数据类型分为基础数据类型和引用数据类型

基础数据类型

基础数据类型是Java在底层帮我们实现好的,我们可以直接使用。它包含了数值型,字符型和布尔型。
基础数据类型分为4类八种

数据类型 关键字 取值范围 内存占用
整数 byte -128~127 1
整数 short -32768~32767 2
整数 int(默认) -2147483648~2147483647 4
整数 long -9223372036854775808L~9223372036854775807L 8
浮点数 float 1.401298e-45到3.402823e+38 4
浮点数 double(默认) 4.9000000e-324到1.797693e+308 8
字符 char 0-65535 2
布尔 boolean true,false 1
整数类型
byte:

byte又叫字节,是最小的整数类型,它占一个字节的大小,也就是8位(bit),它可以存储 -2^7
~ 2^7-1,(之所以减一是因为有一个编码拿去表示0了)
-1范围的数据,也就是-128~127,默认值是0

byte minByte = -128;                //byte最小值
byte maxByte = 127;                 //byte最大值

byte overMinByte = -129;            //编译出错
byte overMaxByte = 128;             //编译出错

byte overMinByte = (byte) -129;     //结果为127
byte overMaxByte = (byte) 128;      //结果为-128
short:

short最小的整数类型是byte,short是倒数第二小的,它占两个字节的大小,也就是16位(bit),所以它有能力存储的整数类型数据范围是
-215~215-1,也就是-32768~32767,默认值同样是0。

short minShort = -32768;                 //short最小值
short maxShort = 32767;                  //short最大值
 
short overMinShort = -32769;             //编译出错
short overMaxShort = 32768;              //编译出错
      
short overMinShort = (short) -32769;     //结果为32767
short overMaxShort = (short) 32768;      //结果为-32768
int:

int类型比short类型更大,它占用四个字节,能表示的范围是从 -231~231-1,也就是-2147483648~2147483647(这个最好能记住,面试的时候有些面试官可能会问到),int类型也是Java中整数默认的类型,默认值同样是0

int minInt = -2147483648;                 //int最小值
int maxInt = 2147483647;                  //int最大值 
 
int overMinInt = -2147483649;             //编译出错
int overMaxInt = 2147483648;              //编译出错
 
int overMinInt = (int) -2147483649;       //编译出错       
int overMaxInt = (int) 2147483648;        //编译出错

int minInt = (int) -2147483649L;          //结果为2147483647
int maxInt = (int) 2147483648L;           //结果为-2147483648

int minInt = -2147483648 - 1;             //结果为2147483647
int maxInt = 2147483647 + 1;              //结果为-2147483648
long:

long型是整数类型中最大的,它占8个字节也就是64位,表示范围就是 -263~263-1
,数太大了,默认值是0L,一般情况下,long可以满足绝大部分的需求

long minLong = -9223372036854775808L;            //long最小值
long maxLong = 9223372036854775807L;             //long最大值 

long overMinLong = -9223372036854775809L;        //编译出错
long overMaxLong = 9223372036854775808L;         //编译出错

long minLong = -9223372036854775808L - 1;        //结果为9223372036854775807

long maxLong = 9223372036854775807L + 1; //结果为-9223372036854775808

小数类型

Java支持两种浮点类型的小数,float和double:

float:占4个字节,共32位,称为单精度浮点数。
double:占8个字节,共64位,称为双精度浮点数。

float:

float和double都是遵循IEEE 754标准的,该标准分别为32位和64位浮点数规定了二进制的表示形式。IEEE 754采用二进制的科学技术法来表示浮点数。对于float浮点数,用一位表示数字的符号,用8位来表示指数(底数为2),用23位来表示尾数,如下图所示。对于double浮点数,用1位表示数字的符号,用11位表示指数(底数为2),52位表示尾数。
在这里插入图片描述
下图就是float的二进制存储规则。

S(1位) E(8位) M(23位) N(32位)
符号位 0 0 0.0
符号位 0 不等于0 (-1)s*2 -126*(0.M)
符号位 1~254 不等于0 (-1)s*2 E-127*(1.M)
符号位 255 不等于0 表示特殊数字

在IEEE 754标准中,约定小数点左边有一位隐含位。就是上表中“0.M”和“1.M”中的“0”和“1”.当指数取值范围为1~254时,这个隐含位就是1,这样实际上尾数的有效位是24位。即为:1.MMMMMMMMMMMMMMMMMMMMMMM。

下面以5.0这个float类型的数字举例说明其二进制形式。

首先将5.0转换成二进制流形式,但是怎么转换呢?Java的Float类提供了一个静态方法可以帮我们将float的数字转换成其二进制流对应的int类型,我们再用Integer的toBinaryString()方法就可以得到二进制流了,具体如下图所示(Java默认小数是double类型,所以定义float类型的数需要加一个字母“f”说明一下):
在这里插入图片描述
注意:这一大串数字是31位并不是32位啊,其实是因为省略了最前面的符号位,因为5.0是整数,符号位是0,所以将其省略了,所以float类型5.0的二进制流是:

0 10000001 0100000000000000000000
符号位S是0,指数部分E为10000001,也就是无符号整数129,尾数部分的隐含位是1,所以实际尾数是1.01000000000000000000000,所以对应的二进制表达式为:
在这里插入图片描述

在这里插入图片描述

double:

double类型采用64位来表示浮点数,精确度比float类型要高,表示形式与float类似,这里就不再写了

char类型

char是字符类型,Java对字符采用Unicode字符编码。由于计算机的内存只能存储二进制数据,因此必须对各个字符进行编码。所谓字符编码,是指用一串二进制数据来表示特定的字符。常见的字符编码有很多,这里就不一一列举了,这里主要说一下Java采用的Unicode字符编码。

Unicode字符编码

Unicode收录了全世界所有语言文字中的字符,是一种跨平台的字符编码,UCS是Unicode字符编码的通用字符集。其有两种编码方案:

  • 两字节(16位)编码,采用这种编码方式的字符集称为UCS-2。Java语言采用的就是两字节的编码方案。
  • 四字节(32位)编码(实际只用了31位,最高位必须为0),采用这种编码方案的字符集称为UCS-4.

前面提到计算机只能存储二进制数据,所以存储字符需要对其进行编码,而Java采用Unicode的UCS-2字符集,占两个字节,例如字符’a’的编码二进制形式为0000 0000 0110 0001,对应16进制0x0061,十进制97,所以以下几种方式是等价的。

char c = 'a';
char c1 = '\u0061';
char c2 = '0x0061';
char c3 = '91';

一般情况下,我们在编写代码的时候,如果需要使用char型数据,我们会直接用字符对变量进行赋值,而不会用这个字符对应的编码,因为我们也记不住它哈哈,但是有些字符在赋值的时候会报错,
在这里插入图片描述

这是因为chat 类型必须是有且仅有一个字符

还有一些特殊的字符也不能直接输入,比如’ ,因为这些字符都是Java中可能需要使用到的特殊字符,所以编译器就自动飘红,这时候就需要我们使用转义字符来转义这些特殊字符。
在这里插入图片描述

boolean类型

boolean也叫布尔类型,是一种取值非真即假也就是true或false的数据类型,Java代码在编译的时候会将boolean用int或者byte替换,用0表示false,用非0正整数表示true,但Java编译器不容许直接用数字对boolean直接赋值

boolean flag = true;            //正确
boolean flag1 = false;          //正确

在这里插入图片描述

引用类型

Java中引用类型分为三种,分别是类引用类型,接口引用类型和数组引用类型

Object object;             //类引用类型
List<Object> list;         //接口引用类型
int[] array;               //数组引用类型

和基础数据类型不同的一点是,引用数据类型可以赋值为null,也就是空的意思

Object object = null;             //类引用类型
List<Object> list = null;         //接口引用类型
int[] array = null;               //数组引用类型

常用的引用类型有很多,Jdk给我们提供了很多核心引用类型供我们使用,当然我们也可以自定义引用类型来使用(除了数据引用类型),为了缩短文章的篇幅,下一章我会详细讲解引用类型的一些常见问题,比如定义和使用等等

数据溢出

long maxLong = 9223372036854775807L + 1; //结果为-9223372036854775808

在计算机中,当数据大小超过计算机所用数据类型表示范围的时候,就会发生数据溢出。比如下面这行代码,上面已经说过byte的最大值为127,那这行代码会发生什么问题呢?看的出来是一个类型不匹配的问题,因为在java中整数类型默认是int,当我们要存储的数值在byte范围之内,编译器会帮我们把数据自动识别成byte类型,但是当我们输入一个超过byte类型表示范围的数据,编译器就会提示我们:“这是一个int类型的数据,你不可以用byte类型来存储”。
在这里插入图片描述
这时我们就可以将130强制转换成byte类型。但是大家可能会问了,130明明已经超过byte类型可以表示的范围了啊,为什么不会报错呢?
在这里插入图片描述
这就涉及到了数据溢出的问题,让我们先看看输出这个num到底会得到几。
在这里插入图片描述
为什么是-126呢?首先我们要知道,在计算机中,数据是用其二进制补码形式来存储的,过程如下:首先130会被当成int类型存储,int是4个字节32位,也就是0000 0000 0000 0000 0000 0000 1000 0010,转成byte类型会丢弃高三字节部分,也就是1000 0010,因为正数的源码,补码,反码相同,所以130的补码还是1000 0010,将其转换成源码:补码(1000 0010)->反码(1000 0001)->原码(1111 1110)为-126,所以最后的转换结果就是-126。128溢出就是-128,129溢出就是-127(相信大家已经明白了,如果不明白的话大家可以给我留言,我会出一篇相关文章的)。其它类型的溢出也是如此。

byte num = 130;                         //编译出错
byte castNum = (byte) 130;              //结果为-126

关键字标识符

Java有一组关键字,这些关键字是保留字,不能用作变量、方法、类或任何其他标识符
1)48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。

2)2个保留字(现在没用以后可能用到作为关键字):goto、const。

3)3个特殊直接量:true、false、null。

关键字 描述
abstract 非访问修饰符。用于类和方法:抽象类不能用于创建对象(要访问它,必须从另一个类继承)。抽象方法只能在抽象类中使用,并且它没有主体。主体由子类(继承自)提供
assert 用于调试
boolean 只能存储真值和假值的数据类型
break 从循环或switch块中断开
byte 可以存储-128和127之间的整数的数据类型
case 在switch语句中标记代码块
catch 捕获由try语句生成的异常
char 用于存储单个字符的数据类型
class 定义一个类
continue 继续到循环的下一个迭代
const 定义一个常量。不在使用中改用final
default 指定switch语句中的默认代码块
do 与while一起使用以创建do-while循环
double 可以存储1.7e−308 到 1.7e+308
else 用于条件语句中
enum 声明枚举(不可更改)类型
exports 导出包含模块的包。Java9中的新特性
extends 扩展类(表示一个类是从另一个类继承的)
final 用于类、属性和方法的非访问修饰符,使它们不可更改(无法继承或重写)
finally 与异常一起使用,无论是否存在异常都将执行的代码块
float 可以存储3.4e−038 到 3.4e+038
for 创建for循环
goto 不在使用中,没有任何功能
if 一个条件语句
implements 实现一个接口
import 用于导入包、类或接口
instanceof 检查对象是特定类的实例还是接口的实例
int 可以存储从-2147483648到2147483647的整数的数据类型
interface 用于声明仅包含抽象方法的特殊类型的类
long 可以存储从-9223372036854775808到9223372036854775808的整数的数据类型
module 声明一个模块。Java9中的新特性
native 指定方法不是在同一Java源文件中实现的(而是在另一种语言中实现的)
new 创建新对象
package 声明一个包
private 用于属性、方法和构造函数的访问修饰符,使它们只能在声明的类中访问
protected 用于属性、方法和构造函数的访问修饰符,使它们可以在同一个包和子类中访问
public 用于类、属性、方法和构造函数的访问修饰符,使它们可以被任何其他类访问
requires 指定模块内所需的库。Java9中的新特性
return 已完成方法的执行,并可用于从方法返回值
short 可以存储从-32768到32767的整数的数据类型
static 用于方法和属性的非访问修饰符。无需创建类的对象即可访问静态方法/属性
strictfp 限制浮点计算的精度和舍入
super 指超类(父)对象
switch 选择要执行的多个代码块之一
synchronized 非访问修饰符,指定一次只能由一个线程访问方法
this 指方法或构造函数中的当前对象
throw 创建自定义错误
throws 指示方法可能引发的异常
transient 非访问修饰符,指定属性不是对象持久状态的一部分
try 创建try…catch语句
var 声明一个变量。Java10中的新特性
void 指定方法不应具有返回值
volatile 指示属性不是本地缓存的线程,并且总是从"主内存"中读取
while 创建while循环

注意 true false null 虽然不能叫做关键字,但它们是不能用作标识符的文字和保留字。

  1. 标识符
    标识符就是一些由字符,符号组合起来的名称,用于给类,方法,变量等起名的

  2. 标识符要求

  • 基本要求: 由数字,字母,下划线(_)和美元符($)组成
  • 强制要求: 不能以数字开头,不能是关键字,区分大小写
    在这里插入图片描述
  1. 命名规范
  • 变量名称: 满足标识规则,建议全英文,有意义,首字母小写,且满足小驼峰模式,例如 int studentAge = 108
  • 类名称: 满足标识符规则,建议全英文,有意义,首字母大写,且满足大驼峰模式,例如 HelloWorld.java
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44368963/article/details/130306135

智能推荐

造数据时踏过的坑-程序员宅基地

文章浏览阅读44次。1.在产生随机数时,在数据规模很大的时候很难出现自己要的模型,比如某个条件的数据量,此时要写一个方法,来造一批这样的数据2.将控制数量,文件路径写成配置文件的形式,以免重复打包3.输入输出文件夹,可以配置以免重复打包 ...

分析N沟道MOS管和P沟道MOS管在电路中的详细应用-程序员宅基地

文章浏览阅读7.5k次,点赞5次,收藏17次。   MOS管集成电路特点:  制造工艺比较简单、成品率较高、功耗低、组成的逻辑电路比较简单,集成度高、抗干扰能力强,特别适合于大规模集成电路。   MOS管集成电路包括:  NMOS管组成的NMOS管电路、PMOS管组成的PMOS管电路及由NMOS和PMOS两种管子组成的互补MOS电路,即CMOS电路。  PMOS管门电路与NMOS管电路的原理完全相同,只是..._n沟道mos管

低成本小车, esp32, micropython, wifi, 浏览器控制控制(四轮版)_远程控制wifi遥控小车-程序员宅基地

文章浏览阅读2.1k次,点赞5次,收藏29次。底成本小车, esp32, micropython, wifi, 浏览器控制控制(四轮版)_远程控制wifi遥控小车

安装modelsim 运行patch_dll.bat闪退不生成license_patchdll打开闪退-程序员宅基地

文章浏览阅读306次。将网络适配器中只留下一个自己用的或许有帮助。_patchdll打开闪退

MySQL 语法问题:You can‘t specify target table ‘xxx‘ for update in FROM clause. 原因及解决方法_you can't specify target table 't_bill' for update-程序员宅基地

文章浏览阅读429次。报错信息如下:[Code: 1093, SQL State: HY000] You can’t specify target table ‘bd_bankaccbas’ for update in FROM clause译文:不能在FROM子句中指定目标表‘bd_bankaccbas’进行更新。有问题的SQL语句如下,它在oracle数据库的语法是支持的,但是mysql就不支持直接这么写:from和update都是同一张表。<span style="col..._you can't specify target table 't_bill' for update in from clause

Spring Boot与消息(JMS、AMQP、RabbitMQ)-程序员宅基地

文章浏览阅读421次。为什么80%的码农都做不了架构师?>>> ..._@jmslistener rabitmq

随便推点

推荐一个神器:wxapp.vim —— Vim中的微信小程序开发利器-程序员宅基地

文章浏览阅读317次,点赞3次,收藏8次。推荐一个神器:wxapp.vim —— Vim中的微信小程序开发利器项目地址:https://gitcode.com/chemzqm/wxapp.vim在前端开发的世界里,Vim作为一款强大的文本编辑器,一直备受程序员们的喜爱。对于微信小程序开发者而言,有一个好消息:wxapp.vim 是一个专为Vim设计的微信小程序插件,能够大幅提升你的代码编写效率。项目简介wxapp.vim是由Git...

00008第一个java桌面小游戏_高淇小球游戏-程序员宅基地

文章浏览阅读833次。我们秉承“快速入门,快速实战”的理念,开发这套系列教程,就是希望朋友们在学习过程中,尽快进入实战环节,尽快介入项目,让大家更有兴趣,更有成就感,从而带来更大的学习动力。如下的小项目,对于第一次接触编程的朋友从理解上会有难度。但是,我们这个项目不在于让大家理解代码本身,而上让大家重在体验“敲代码的感觉”。【项目】桌球游戏小项目练习目标找到敲代码的感觉收获敲代码的兴趣作出效果,找到自信..._高淇小球游戏

大数据(9h)FlinkSQL之Lookup Join_flink lookup join-程序员宅基地

文章浏览阅读6.8k次,点赞6次,收藏15次。ttlFOR SYSTEM_TIME AS OFProcessing Time Temporal Joinlookup joinlookup cacheFlink查询缓存lookup.cache.max-rowslookup.cache.ttl_flink lookup join

路由基础知识-程序员宅基地

文章浏览阅读1.1k次。路由是数据通信网络中最基本的要素。路由信息是指导报文转发的路径信息,路由过程就是报文转发的过程。本文将会介绍路由的基本概念及相关的基本知识。_路由基础知识

LAMP 架构深度优化-程序员宅基地

文章浏览阅读223次。转载地址:https://blog.51cto.com/ucode/1750564著作权归作者所有:来自51CTO博客作者027ryan的原创作品,如需转载,请注明出处,否则将追究法律责任1、Apache worker/prefwork模式说明在linux中,我们可以用httpd-l 查看安装的模块是prefork模式还是worker模式[root@LAMP ~]# /applic..._lamp优化的提示在哪里

python3.7.3+cuda9.2安装pytorch_python官网cuda9.2-程序员宅基地

文章浏览阅读496次。不靠谱的博客太多了。。。网上各种方法搞得人头大,明明超级简单,但信息接收太多反而对心理造成极大负担我试了很多方法,包括各博客用清华源等等下载的、怎么离线安装、还有下载cudann啥的,其实重点很明确,就是确定自己的cuda版本和python版本,然后去官网复制命令安装。不知道折腾了这么久 我的电脑会不会有啥影响,众多没装成功pytorch会崩掉我的电脑吗。。下面是我的安装过程:先确定python版本win+R,输入cmd,打开命令窗口,然后输入python即可看到自己的版本确定是否有_python官网cuda9.2

推荐文章

热门文章

相关标签