首页 > 编程语言 >JAVA学习笔记--数据类型及注意事项

JAVA学习笔记--数据类型及注意事项

时间:2024-01-25 16:13:49浏览次数:28  
标签:输出 JAVA 字节 -- 数据类型 System int println out

Java的数据类型(笔试考题)

Java是强类型语言:要求变量使用要严格符合规定,所有变量都必须先定义后才能使用

基本类型(primitive type)

数据类型

  • 整数类型

    byte(1字节):-128~127

    short(2字节):-32768~32767

    int(4字节):-2147483648~2147483647(最常用)

    long(8字节):-9223372036854775808~9223372036854775807(赋值时再数字后加个L,用于分辨)

    long a = 1000000000L;//尽量使用大写L,因为小写l和数字1很像
    
  • 浮点类型:

    float(4字节)(赋值时在数值后加F,用于区分)

    float a = 23.4F;
    

    double(8字节)

  • 字符类型:char(2字节)

    注意:String为字符串类型,但String是类不是关键字

boolean类型

占1位(bit),且值只有true和false

1字节(B)=8位(b)

引用类型(reference type)

  • 接口
  • 数组

常见的问题(面试考题)

整数拓展:进制表示

  • 二进制:0b开头(0b10=2)
  • 十进制:正常数值(10)
  • 八进制:0开头(010=8)
  • 十六进制:0x开头(0x10=16)

浮点数拓展:

银行业务怎么表示?(钱)

使用BigDecimal (数学工具类)表示银行业务

不可使用浮点数(float/double)进行表示,因为浮点数是有限、离散的,有舍入误差,是大约、接近的数值,近似但不等于;

例如:

float f=0.1f;//0.1
double d=1.0/10;//0.1
//输出f==d的值为false
float d1=231312131212345f;
float d2=d1+1;
//输出d1==d2的值为true

注意:最好完全避免使用浮点数进行比较!!!

字符类拓展:强制转换

所有的字符本质还是数字

Unicode编码:0~65536(2的16次方)

表示方法:U0000、UFFFF

char c1='a';
char c2='中';
System.out.println(c1);//输出a
System.out.println((int)c1);//强制转换:输出97(a的ASCILL码值)
System.out.println(c2);//输出中
System.out.println((int)c2);//强制转换:输出20013
//Unicode编码
char c3='\u0061';//'\u'是转意字符,表示Unicode编码
System.out.println(c3);//输出a

转意字符

  • \t:制表符
  • \n:换行
  • ........

布尔值拓展

boolean flag=true;
//以下两行代码意思是相同的(代码要精简易读)
if(flag==true){}
if(flag){}

类型转换

强制转换:从高转为低

  • (低容量)byte、short、char-->int-->long-->float-->double(高容量)

  • 格式:(类型)变量名

int i = 128;
//byte的范围是0-127,将i强制转为byte类型会出现内存溢出
byte b = (byte)i;
System.out.println(i);//输出128
System.out.println(b);//输出任意数字
//高转低
System.out.println((int)23.7);//输出23
System.out.println((int)-45.89f);//输出-45
//低转高
char c = 'a';
int d = c + 1;
System.out.println(d);//输出98,a为97
//高转低
System.out.println((char)d);//输出b

自动类型转换:低-->高

注意点:

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 在把高容量转换为低容量时,使用强制转换
  4. 转换时可能存在内存溢出或者精度问题

注意小事项

  • JDK7的新特性,数字之间可以使用下划线分割,下划线不会被打印
//以下两句相等
int money=1000000000;//1亿
int money=10_0000_0000;//1亿
  • 操作比较大的数时,注意溢出问题
int money=10_0000_0000;//1亿
int years=20;
int total=money*years;//输出-1474836480,计算时出现溢出
long tital2=money*years;//输出-1474836480,转换前已经存在问题
long tital3=money*((long)years);//输出:20000000000,正确做法强制转换,先把一个转为long型

标签:输出,JAVA,字节,--,数据类型,System,int,println,out
From: https://www.cnblogs.com/dxrrrr/p/17987380

相关文章

  • nginx 如何强制跳转 https
    本项目nginx作为代理服务项目上线,客户说要加个安全证书,于是安全证书是加上了,可是htttp和https都能访问网站,客户要求不行必须强制用带有https的地址访问开整这是http和https都能访问的nginx.conf 关键配置  server{listen80;lis......
  • 闲话
    注意力开始显著的下降,很难长时间的专注的做一件事情(尤其是使用手机的时候。现在已经没办法投入的学习了,感觉非常的怠惰,感觉非常的空虚,/fn需要增加出去乱逛的活动,周四跟着去做点义工玩玩,虽然貌似是纯华人义工(大概学生中心也没有能用英语交流的大人罢,很难想象若干年的英语水平还停......
  • iOS ARKit--人脸检测追踪基础
        在计算机人工智能(ArtificialInteligence,AI)物体检测识别领域,最先研究的是人脸检测识别,目前技术发展最成熟的也是人脸检测识别。人脸检测识别已经广泛应用于安防、机场、车站、闸机、人流控制、安全支付等众多社会领域,也广泛应用于直播特效、美颜、Animoji等娱乐领域。......
  • 前端二进制文件下载
    //下载模板exportfunctiondownTemplate(data={}){returnrequest({url:`${apiPrefix}/system/user/importTemplate`,method:'POST',data,responseType:'blob'//需要添加返回类型})}constres=awaitdownTemplate(......
  • 通过域名解析IP地址
    1、ping查询首先点击电脑屏幕左下角的开始键,找到开始菜单里面的运行,打开,然后会弹出一个对话框,在对话框里面输入“ping+空格+网站的域名”。举个例子,想要查询百度的IP的话,就输入pin+空格+百度的网址,然后点击确定或者按回车键就好了,这时候IP就会自动显示出来,但是这种方法有一个缺......
  • JAVA学习笔记--变量与常量
    变量局部变量注意:必须声明并且必须初始化值publicclassHello{//main方法publicstaticvoidmain(String[]args){//局部变量,只在{}内使用inti=10;System.out.print(i);}//其他方法publicvoidadd(){......
  • C# AsyncLocal 是如何实现 Thread 间传值
    一:背景1.讲故事这个问题的由来是在.NET高级调试训练营第十期分享ThreadStatic底层玩法的时候,有朋友提出了AsyncLocal是如何实现的,虽然做了口头上的表述,但总还是会不具体,所以觉得有必要用文字+图表的方式来系统的说一下这个问题。二:AsyncLocal线程间传值1.线程间传值途径在......
  • 源码文件阅读---hooks的使用---使用文心一言读代码
    import{CommonFormTypes}from'globalConstants';import{createContext,useCallback,useState}from'react';import{BoardType}from'../../../DashBoardPage/pages/Board/slice/types';import{VizType}from'./slic......
  • 阿里云服务器Centos镜像解决方案apt-get: command not found
    阿里云服务器Centos镜像解决方案apt-get:commandnotfound:https://blog.csdn.net/qq_45848361/article/details/110359637?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170616908216800227442979%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257......
  • 新版本的 Jenkins 2.388的权限修改设置Jenkins为root用户启动---亲测好用OK
    摘自:https://www.cnblogs.com/zpzp/p/17135020.html 最新版本的Jenkins修改/etc/sysconfig/jenkins中的JENKINS_USER=root不会再生效,需要按照以下配置进行操作 vim/usr/lib/systemd/system/jenkins.service重新加载和重启systemctldaemon-reloadsystemctlresta......