黑马程序员—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

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签