一.标识符

    • 在程序中自定义的一些名称
    • 由26个英文字母的大小写,数字,_$组成
    • 定义合法标识符的规则:
    1. 不能以数字开头
    2. 不能使用关键字
    • java严格区分大小写
    • 注意:在起名字时,为了提高阅读性,必须得起得有意义。

二.关键字

被赋予了特殊java含义的单词。

  • 关键字全都是小写

三.注释

1.行注释:使用 // 来注释一行文字或代码。

//这是行注释的内容

2.块注释: 块前使用 /* ,块后使用 */ 包裹住要注释的块内容

/*
这是块注释
这是块注释
*/

3.文档注释:文档前使用 /** ,文档后使用 */ 包裹文档注释的内容。

/**
这是文档注释
*/

注释的作用:

  • 注解说明程序
  • 调试程序

四.常量和变量

1.常量:

  • 常量表示不能改变的数值。代码中直接出现的值。
  • java中常量的分类:
  1. 整数常量。所有整数
  2. 小数常量。所有小数
  3. 布尔常量,true或false
  4. 字符常量。将一个符号,数字或字母用单引号(’’)标识
  5. 字符串常量。将一个或多个数字,符号或字母用双引号(””)标识
  6. null常量,只有一个值 即 null,表示空

2.变量:

    • 变量的概念:
    1. 内容中的一个存储区域
    2. 该区域有自己的名称(变量名)和类型(数据类型)
    3. 该区域的数据可以在用一类型范围内不断变化
    • 为什么要定义变量:

                      用来不断的存放同一类型的常量,并可以重复利用

    • 使用变量应注意的问题:
    1. 变量的作用范围(一对{}之间)
    2. 在使用变量前必须先初始化
    • 定义变量的格式:
    1. 数据类型  变量名 = 初始化值
    2. 注意:格式是固定的

 

java是强类型语言,对每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的区域。

整数默认:int  小数默认:double

取值范围:

byte : -128~127   , 1个字节

short: -2^15~2^15-1 ,2个字节

int : -2^31~2^31-1  ,4个字节

long:-2^63~2^63-1  , 8个字节

float : 4个字节

double: 8个字节

char: 0~65535, 2个字节

 

变量的定义:

byte b = 3;
short s = 4000;
int x = 12;
long l = 1234567890123l;//最后一个字符不是数字1,而是字母L float f = 2.3f;
double d = 2.3; char ch = 'a'; boolean bl = true;
 

3.类型提升和强制类型转换

整数的类型提升和强制类型转换:

类型提升,如:

int a = 12;
byte b = 3; a = a + b;

运算过程:a+b时,由于a为4个字节,b为1个字节,在运算时,java会自动类型提升,并且以a为主,即把b转换为4个字节,前三个字节全为0,再进行相加,结果为4个字节,最后把结果赋值给a。

强制类型转换,如:

int a = 12;
byte b = 3; b = (byte)(a + b);

运算过程:和上面一样,a+b的结果为4个字节,不能直接赋值给byte类型的b,需要进行强制类型转换,将结果的第一个字节保留后赋值给byte类型的b。要对整数进行强制类型转换,必须确保要转换的值在byte范围之内,否则后丢失数据。

注意:字符型数据和int类型数据运算时,取字符类型数据的Ascii码再和这个int数据运算,结果为int数据。


到这里,我有了一个疑问:在定义和初始化byte类型数据时,byte b = 4; 4不是int类型数据吗?怎么不用强制类型转换,就可以把4赋值给byte类型的变量b。

原因:java在运行byte b = 4这句代码时,编译器会自动判断4这个int型数据是否超过byte型数据所能表示的范围(-128~127)之内,如果4这个数在这个范围内,自动类型转换为byte数据,没有丢失数据;如果4这个数超出这个范围,编译就会报 可能丢失精度的错误。

面试题:下面两个代码为什么出现不同的结果。

1.

byte b = 4;
b = 3+7; System.out.println(b);

2.

byte b = 4;

byte b1 = 3;
byte b2 = 7; b = b1 + b2; System.out.println(b);

结果:第一个代码运行不会报错,第二个会报b = b1 + b2 这句可能损失精度的错误。

原因分析:第一个代码分析同上面疑问的原因,第二个,由于b1和b2是变量,编译器不确定它们的值会不会超出byte表示数据的范围。所以也就检查不了。第一个为常量,可以判断和检查3+7的结果有没有超出byte类型所表示的范围。

联想:以下代码不会报错:

int x ;

int x1 = 100;
int x2 = 98; x = x1 + x2; System.out.println(x);

原因:int是整数的默认类型。就算这个结果超出了int数据表示的范围,底层也会进行强制类型转换,不管是不是损失精度。

[java学习笔记]java语言基础概述之标识符&关键字&注释&常量和变量的更多相关文章

  1. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

  2. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  3. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  4. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  5. Java学习笔记-Java概述和环境配置

    基础常识 软件:一系列按照特定顺序组织的计算机数据 和指令的集合 常见的软件: 系统软件:如:DOS,windows,Linux等 应用软件:如:扫雷,迅雷,QQ等 软件的出现实现了人与计算机之间的更 ...

  6. Java学习笔记1(基础)

    计算机语言和Java 计算机语言主要由一些指令(包括数字.符号和语法等)组成,可以分为机器语言.汇编语言.高级语言三大类.Java是一种高级计算机语言,是一种可以编写跨平台应用软件.完全面向对象的程序 ...

  7. Java学习笔记——java基础

    2020.9.1 学习来自 https://www.liaoxuefeng.com/wiki/1252599548343744/1255883729079552 一.变量和数据类型 基本数据类型 基本 ...

  8. Java学习笔记 -- Java定时调度工具Timer类

    1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...

  9. java学习笔记----java入门

    java基础 一.java语言跨平台原理 1.什么是跨平台? 跨平台就是一个软件可以在不同的操作系统中运行,但是不需要对其修改.换句话说,java语言编写的软件在不做修改的情况下就能在不同的系统平台上 ...

随机推荐

  1. mysql 开启记录慢查询记录

    以下操作,基于 mysql 5.5.31 版本源码安装配置. 修改 /etc/my.cnf 中 [mysqld] 中添加如下行 # 5.3 一下的配置 log-slow-queries=/var/lo ...

  2. cocos2d-x RenderTexture

    转自:http://blog.csdn.net/bill_man/article/details/7250911 1.CCRenderTexture 使用CCRenderTexture的过程总结起来一 ...

  3. C++多态的实现与局限性

    1.什么是多态? 父类指针指向子类对象,运行时期调用方法的时候,根据方法拥有者的真实类型,确定调用哪个方法. 2.如何实现多态? 要实现多态,需要加一个中间层,暴露父类的方法,内部根据指针的真实类型决 ...

  4. ThinkPHP3.1快速入门(13)自动完成

    自动完成是ThinkPHP提供用来完成数据自动处理和过滤的方法,使用create方法创建数据对象的时候会自动完成数据处理.因此,在ThinkPHP使用create方法来创建数据对象是更加安全的方式,而 ...

  5. eclipse+webservice开发实例

    1.參考文献: 1.利用Java编写简单的WebService实例  http://nopainnogain.iteye.com/blog/791525 2.Axis2与Eclipse整合开发Web ...

  6. ABAP 常用系统变量

    SY-ABCDE 常量,A-Z字母表SY-BATCH 后台的程序运行SY-COLNO:当前选定列的列号SY-CPAGE 列表的当前显示页SY-CUCOL 屏幕,PAI 的水平光标位置SY-CUROW: ...

  7. [Effective C++ --012]复制对象时勿忘其每一个成分

    引言: 在深拷贝和浅拷贝的理解中,我们知道了“拷贝构造函数”一词,并且也了解了它的构成. A(const A& r); // 形式有多种,在这里只列出一个 因此,在值传递的应用场景里,我们可以 ...

  8. 信号之alarm和pause函数

    使用alarm函数可以设置一个计时器,在将来某个指定的时间,该计时器会超时.当计时器超时时,产生SIGALRM信号.如果不忽略或不捕捉此信号,则其默认动作是终止调用该alarm函数的进程. #incl ...

  9. ajax数据保存及解析

    1.   $('#frmCam').serialize():serialize() 方法通过序列化表单值,创建 URL 编码文本字符串. 2.自动对应ID和值 window.camConfig = [ ...

  10. C语言——结构体

    struct 是一种把一些数据项组合在一起的数据结构.在Go,Rust这些新语言中都保留了结构体 struct 的概念,这是C的精华. 定义匿名结构体 例:学生信息定义为一个结构体,信息内容包括学生的 ...