黑马程序员—Java基础语法 之关键字,标识符,常量,变量_错误: 浮点文字的格式错误 public static void main(string args[-程序员宅基地

技术标签: java  java学习笔记  java基础细节  

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一,语言基础组成
Java语言基础由关键字标识符注释常量变量运算符语句函数数组等组成。
本篇重点在变量中。
关键字:被Java语言赋予了特殊含义的单词,所有关键字的单词全小写拼写。
abstract :表明类或者成员方法具有抽象属性
assert :用来进行程序调试
boolean :基本数据类型之一,布尔类型
break :提前跳出一个块
byte :基本数据类型之一,字节类型
case :用在switch语句之中,表是其中的一个分支 
catch :用在异常处理中,用来捕捉异常
char :基本数据类型之一,字符类型
class :类
const :保留关键字,没有具体含义
continue :回到一个块的开始处
default: 默认,例如,用在switch语句中,表明一个默认的分支
do :用在do-while循环结构中
double :基本数据类型之一,双精度浮点数类型
else :用在条件语句中,表明当条件不成立时的分支
enum :枚举
extends :表明一个类型是另一个类型的子类型,这里常见的类型有类和接口
final :用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变
finally :用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float :基本数据类型之一,单精度浮点数类型
for :一种循环结构的引导词
goto :保留关键字,没有具体含义
if :条件语句的引导词
implements :表明一个类实现了给定的接口
import :表明要访问指定的类或包
instanceof :用来测试一个对象是否是指定类型的实例对象
int :基本数据类型之一,整数类型
interface :接口
long :基本数据类型之一,长整数类型
native :用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new :用来创建新实例对象
package :包
private :一种访问控制方式:私用模式
protected :一种访问控制方式:保护模式
public :一种访问控制方式:共用模式
return :从成员方法中返回数据
short :基本数据类型之一,短整数类型
static :表明具有静态属性
strictfp :用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
super :表明当前对象的父类型的引用或者父类型的构造方法
switch :分支语句结构的引导词
synchronized :表明一段代码需要同步执行
this :指向当前实例对象的引用
throw :抛出一个异常
throws :声明在当前定义的成员方法中所有需要抛出的异常
transient :声明不用序列化的成员域
try :尝试一个可能抛出异常的程序块
void :声明当前成员方法没有返回值
volatile:表明两个或者多个变量必须同步地发生变化
while:用在循环结构中
标识符
程序中自定义的名称,比如类名,函数名,变量名,常量名等等
有26个英文字母的大小写,数字0-9,两个特殊符号_ 和$组成
标示符命名规则
必须遵守的规则:1,开头不能是数字,错误示范:2MyClass;
2,不能使用关键字,上面表中的都不能用;
3,标示符中不能包含除了_和$以外的特殊符号,错误示范:My Class
命名惯例,非必须,建议使用
1,起名字尽量有意义,增强阅读性
2,公司中经常会通过“_”代表某一类名称,例如:_temp。
通过“ TextColor Blue。
3,不同位置的标识符书写规范:
包名:多单词组成时所有字母都小写。例如:xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写。例如:XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。例如:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接。例如:XXX_YYY_ZZZ
注释
为了提高阅读性,可以使用注释,编译器会自动忽略注释包含范围内的文字或代码
注释格式有三种:
1.单行注释
格式://注释文字
2.多行注释
格式:/注释文字/
3.文档注释
格式:/*注释文字/
对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具javadoc所解析,生成一 套以网页文件形式体现的该程序的说明文档。
注意:单行注释可以嵌套单行注释,单行注释可以嵌套多行注释,多行注释可以嵌套单行注释。但是,多注释不能嵌套多行注释,因为多行注释的开头会和被嵌套的多行注释的结尾配对,导致后面的注释失效。
常量
表示不能改变的数值或字符。6种常量:
 1.整数常量:所有整数。
2.小数常量:所有小数。
3.布尔(boolean)型常量:只有两个数值,true、false。
4.字符常量:将一个数字字母或者符号用单引号(’’)标识,如:’a’。
5.字符串常量:将一个或者多个字符用双引号(“”)标识,如:”helloworld”、”a”、”“(空字符串)。
6.null常量:只有一个数值就是:null。
常量知识点中涉及到的知识点:
进制的转换
整数中常用到的进制有,二进制,八进制,十进制,十六进制,要懂的其相互转换
二进制:逢二进一,八进制:逢八进一…………
使用电脑的计算器,转为程序员模式,可以进行进制转换。
如十进制下,输入6,点击二进制,即可把6转为二进制表现形式110
进制转换计算方式:
十进制转二进制:
这里写图片描述
二进制转十进制:
这里写图片描述
十进制转八进制
这里写图片描述
十进制转十六进制
这里写图片描述
二进制的负数
这里写图片描述

变量
内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化。就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间。
定义变量的格式:
数据类型变量名=初始化值;
例如:

byteb=3;

注意:1、格式是固定的
2、变量的作用范围(一对{}之间有效)。
3、变量只能存放某一类型的数据。
变量中涉及的知识点:
基本数据类型
Java语言中的数据类型包括8种基本类型,3中引用类型

不同数据类型所占内存空间不同:
byte 1个字节 -128~127
short 2个字节 -2^15~2^15-1
int 4个字节 -2^31~2^31-1
long 8个字节 -2^63~2^63-1
float 4个字节 3.4e-038~3.4e+038
double 8个字节 1.7e-308~1.7e+308
char 2个字节 \u0000-\uffff
boolean 1bit true\false 默认值为false
1字节即1byte为8bit(位)

默认整数类型为int,默认小数类型为double
Double类型小数精度比float精度高,但不管double还是float都存在掉失精度的可能性
变量中常见错误:
错误示例一:

byte a=3;
byte a=8;//错误,定义一次后,上次定义作用范围内不能再定义。

错误示例二:

long a=12345875895582;//赋值给long类型的整数后面应该加上“l”或“L”,否则后面整数会被认为int类型,要是超出int范围,就会报错。

错误示例三:

float f = 2.3;//小数默认类型为double,赋值给float会损失精度,编译错误,应加上“f”或者“F” float f= 2.3f;

错误示例四:

class Demo
{
public static void main(String[] args){
int y;
System.out.println(y);//编译错误,未对y初始化,不能直接操作
}
}

错误示例五:

class Demo{
public static void main(String[] args){
int z = 9;
}
System.out.println(z);//变量的作用范围在定义的{}内,超出失效。
7.}

三种进制的数值常量
Java语言中,数值常量可以用十进制,八进制,十六进制来表示,但并不是所有类型的基本数据都支持这三种形式的常量赋值
十进制:最常用的表示方式,如+9、2.4e6f、-1.0.浮点常量的十进制数可以小数形式表示,也可以指数形式表示,如123.45可以表示为1.2345e2.其中+为正,可以省略,-为负号,不可省
八进制:以数字“0”开头,如034、-071.注意八进制赋值时,数字最大为7,否则会编译错误,如:
int a=068;//错误
浮点类型无八进制表示形式,出现如下赋值,编译器会视为十进制赋值:
float a=03.5f;//十进制赋值
十六进制:以“0x”或“0X”开头,如0x9f,0x7.3p8f。如果以十六进制表示浮点数,只能以指数形式,如:

double d=0x1.0;//非法赋值语句
/*错误提示
TestDemo.java:5: 错误: 浮点文字的格式错误
        double d=0x1.0;
*/

浮点数以十六进制表示时,指数符号为“p”或者P,而十进制指数符号为“e”或者“E”
数据类型转换
数据类型转换分为自动类型转换和强制类型转换
基本数据类型按由低到高排列

byte short(char ) int long float double

自动类型转换又称隐式类型转换,又低到高可以自动转化
例如:

intx=3;
byteb=5;
x=x+b;//byte类型的b被自动转化为int,再参与运算
而由高到低类型转换由于存在丢失数据的风险,所以编译器要求进行强制类型转换,又叫显示类型转换,否则编译失败。

例如

class TestDemo
{
    public static void main(String[] args)
    {
    short s=178;
    byte b =(byte)s;
    System.out.println(b);//结果为-78

    }
}

由于short类型178存在内存中表示为0000 0000 1011 0010,强制转换为byte,byte只有1字节,所以前面一个字节数据掉失,所以b=1011 0010,为-78;
计算方式为,178-256=-78

错误示例:

class VarDemo
{
public static void main(String[] args){
byte b = 3;
b = b + 200;//编译失败“200”为int类型,b变量被提升为int变量相加结果为int类型,再
System.out.println(b);//赋值给byte类型,可能损失精度 改为b=(byte)(b+200),编译正确
}
}

char类型可与int类型相加

class TestDemo
{
    public static void main(String[] args)
    {
    char a ='a';
    int s=7;
    a=(char) (a+s);
    System.out.println(a);//结果为 h;

    }
}

说明:字符类型数据之所以能够自动提升为int类型是因为字符类型数据在计算机中也是用0、1表示 的,int类型数据在计算机中也用0、1表示,所以char类型数据当然可以转换为int类型数据。但是,字符 类型数据在计算机中使用0、1表示是按照何种顺序组合排列的则需要依据某个码表而定。Java中的内置 码表是Unicode,既包含中文,也包含英文。
表达式的数据类型自动提升:
所有的byte型、short型和char的值将被提升到int型。
注意:在计算过程中,遇到高位数据类型才会转换,未遇到,不会转换
测试实例:

class TestDemo
{
    public static void main(String[] args)
    {
    long a=70*60*24*365*70;
    System.out.println(a);
    }
}

结果为

-1719527296

原因是70、60、24、365、70都是int类型,他们的运算结果自然也是int类型,得到的结果超出int范围,导致结果溢出,赋值给long类型的变量a时,自动转换为long类型,之前结果已经掉失精度,赋值给long自然也掉失了
解决方法,在运算时加入long类型操作数

class TestDemo
{
    public static void main(String[] args)
    {
    long a=70*60*24*365*70*1L;//在最后*1L
    System.out.println(a);
    }
}

结果依然为:

-1719527296

问题未解决,虚拟机只有在遇到高数据类型才会提升,除了byte,short会自动提升。
所以代码应该这样写:

long a=1L*70*60*24*365*70;

结果为

2575440000

这样问题才算解决
也可以这样写:

long a=70L*60*24*365*70;

或者这样写

long a=(long)70*60*24*365*70;

但不能这样写

long a=(long)(70*60*24*365*70);
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/oHaiShi1/article/details/49187973

智能推荐

VS2015/2017 C++ 报错解决方案 笔记_ui cannot open file-程序员宅基地

文章浏览阅读502次。明明路径是对的,然后路径上也确实有这个lib文件,但就是报错。这样就可以成功编译了。_ui cannot open file

建表到查询,mysql数据库的干货分享_mysql建表之后怎么转化成查询代码-程序员宅基地

文章浏览阅读194次。数据库一、定义数据库(databse):数据仓库,它是保存和管理数据的仓库如果希望在程序中实现数据持久化操作,数据库就是一种非常好的解决方案BATCMD :百度、阿里、腾讯、携程、美团、滴滴IOE :IBM小型机 / Oracle数据库 / EMC存储设备 - 贵x86服务器 / MySQL / DFS : 去IOE运动 - 性价比非常高1、分类关系型数据库(SQL)理论基础:关系代数 + 集合论具体表象:用二维表保存数据行:记录列:字段(属性)编程语言:结构化查询_mysql建表之后怎么转化成查询代码

win10系统安装Tensorflow2.1—gpu版本完整流程(含图片)_tensorflow2.1后面版本没有gpu-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏16次。前排友情提醒,若电脑无核心显卡,请不用安装GPU版本,乖乖的安装CPU版本吧已被验证兼容的各部分版本如下:tensorflow - 2.1/2.2python - 3.7.7cudatoolkit - 10.1cudnn - 7.6.5若想了解旧的Tensorflow版本以及对应的cuda、cudnn版本,请访问Tensorflow官网,并下滑至最底部。如图一、安装CUDA务必确定tensorflow的CUDA版本。(ps:博主当初就是在这里踩坑的,博主一开始下载了本机的NVIDIA_tensorflow2.1后面版本没有gpu

抖音直播带货需要注意什么;教你快速促进用户下单成交;丨国仁网络资讯_怎么促进直播交易-程序员宅基地

文章浏览阅读1.5k次。很多主播,尤其是新人主播,直播时和陌生人聊天的时候会感觉到害羞、紧张,以至于要么说话太多,要么茫然不知道做啥,说啥,下面给大家教一些新手抖音主播直播话术,新手抖音怎么直播需要什么条件。一、每个主播都知道需要和用户互动。但互动也是要需要提前做好准备的。准备和用户的共同点:共同点是和陌生人快速大开话匣子的有力法宝。比如你的粉丝画像大部分是哪里人,喜欢吃什么,有什么兴趣爱好等等。找到共同点后,顺着这个共同点深聊下去,慢慢就可以延伸到其他话题。积攒话题:对于聊天话题,主播平时就要善于抓住实时热点,._怎么促进直播交易

数据统计分析的16个基础概念-程序员宅基地

文章浏览阅读911次。来源:EasyShu本文约11000字,建议阅读20分钟本文介绍了数据统计分析的16个基本概念。一、描述统计描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描述统计分为集中趋势分析和离中趋势分析和相关分析三大部分。集中趋势分析:集中趋势分析主要靠平均数、中数、众数等统计指标来表示数据的集中趋势。..._数据统计能力的概念

【送书福利-第十九期】《C++ Core Guidelines解析》-程序员宅基地

文章浏览阅读4.5w次,点赞48次,收藏44次。【程序员洲洲送书福利-第十九期】《C++ Core Guidelines解析》

随便推点

快速入门系列--FPGA中的时序分析与约束_fpga时序约束与分析-程序员宅基地

文章浏览阅读1.2k次,点赞9次,收藏35次。时序分析,是所有的FPGA工程师在成长过程中都绕不开的技术,由于在一开始我们学FPGA的时候设计的系统都是低速简单的,所以就使得时序分析看起来好像并没有卵用,我不学我的系统照样可以跑起来啊,于是慢慢忽视了这一部分的学习。但是随着我们的技术的不断提升,我们需要设计一些高频复杂的系统了,结果傻眼了,明明我的代码逻辑没错,我的波形验证也没错,怎么一上板子他就有问题呢?这时就轮到我们的时序分析开始发挥作用了。_fpga时序约束与分析

正确解决CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'._docker your shell has not been properly configured-程序员宅基地

文章浏览阅读5.4w次,点赞93次,收藏129次。最近Ubuntu下面使用conda activate name激活虚拟命令的时候,突然报错,信息如下:CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.To initialize your shell, run $ conda init <SHEL..._docker your shell has not been properly configured to use 'conda activate'.

java后端拼url地址,地址里面需要拼接变量,那种方式最好用?_java里的url地址是使用字符串拼接还是替换好-程序员宅基地

文章浏览阅读2.9k次。代码:// 以下地址来自微信String baseUrl = "https://open.weixin.qq.com/connect/qrconnect" + "?appid=%s" + "&redirect_uri=%s" + "&response_type=code" + "&scope=snsapi_login" + "&state=%s" + "#wechat_redi_java里的url地址是使用字符串拼接还是替换好

智慧水利数字孪生平台_水利工程三维可视化管理_数字重庆水利-程序员宅基地

文章浏览阅读230次。在水利工程管理中,数据三维可视化技术可以将各个水利设施的信息进行三维可视化呈现,如河流、水库、堤坝等,实现数据实时监测和自动预警功能。水利工程进行数据三维可视化管理,具有广泛的应用前景。通过数字化管理,可以更加准确地掌握水文信息、水质信息、水位信息、水资源信息等,制定科学合理的管理方案,提高管理效率和准确性,保障水利工程的安全和稳定运行。在维护生态平衡方面,水利工程数据三维可视化管理可以实时监测水土数据、水质数据、水中细菌、氧气值等,设定各项合理值范围,一旦超过阀值,可进行实时预警。_数字重庆水利

React学习网址,扩展安装,工程化创建_zh-hans reaft dev-程序员宅基地

文章浏览阅读968次,点赞23次,收藏21次。本篇文章讲述了React的学习地址,开发需要哪些扩展,怎么安装扩展,React工程化项目怎么搭建_zh-hans reaft dev

【Redis系列7】Redis高级特性之发布/订阅和Lua脚本执行原理分析_redis lua-time-limit-程序员宅基地

文章浏览阅读1.5k次,点赞18次,收藏2次。Redis高级特性之发布/订阅和Lua脚本执行原理分析前言发布与订阅基于频道的实现实现原理分析基于模式的实现实现原理分析Lua脚本Lua脚本的调用Lua脚本中执行Redis命令Lua脚本摘要Lua脚本文件脚本异常脚本超时脚本陷入死循环为什么可以执行script kill命令总结前言Redis当中除了之前介绍的事务,持久化等高级特性之外,还提供了发布与订阅,Lua脚本,事件机制等高级特性,本文会继续介绍Redis的另外两大高级特性:发布与订阅和Lua脚本。发布与订阅理论上来说通过双端链表就可以实现发布_redis lua-time-limit