java基本语法1--数据类型/关键词/标识符/运算符/注释/变量/java运行期数据存放

Java关键字

abstract

boolean

break

byte

case

catch

char

class

const

continue

default

do

double

else

extends

assert

final

finally

float

for

goto

if

implements

import

instanceof

int

interface

long

native

new

strictfp

package

private

protected

public

return

short

static

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while

enum

 

Java保留字

为Java预留的关键字,现在还没有用到,但在升级版本中可能作为关键字被使用。

byValue、cast、false、future、generic、inner、operator、outer、rest、true、var、goto(跳转到....)、const(常量)、null

 

Java关键字与保留字区别

参考:https://www.cnblogs.com/nancyzhang/p/8147526.html

Java关键字(KeyWord):  对Java的编译器有特殊的意义,他们用来表示一种数据类型或者表示程序的结构。

Java保留字(Reserved Word):为Java预留的关键字,现在还没有用到,但在升级版本中可能作为关键字被使用。

 

Java关键词(50个)

 

 

JAVA保留字

 

注意:

1. goto 和 const 这两个关键字是c++保留的关键字,目前在java中不能使用。(使用时会报错)

2. 所有的关键字都是小写,如果关键字中任何一个字母大写则不再是关键字。(Java中区分大小写)

3. then、sizeof、String、NULL、friendly 等都不是关键字,虽然看起来很像(可能因为大小写的关系或者可能是其它语言的关键字但不是Java的)

补充:

assert关键字有两种用法(在使用JUnit或TestNG进行自动化测试的时候会经常用到):

1、assert <boolean表达式>

如果<boolean表达式>为true,则程序继续执行。

如果为false,则程序抛出AssertionError,并终止执行。

2、assert <boolean表达式> : <错误信息表达式>

如果<boolean表达式>为true,则程序继续执行。

如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。

 

Java标识符

java语言中,对于变量,常量,函数,语句块也有名字,我们统统称之为Java标识符.

标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的。

分为两类:

1、已经被赋予特殊含义的系统定义的一些标识符(关键字)

2、未被定义的,用户自己定义一些具有特殊含义的单词

在Java中,我们需要标识代码中的很多元素,包括类名、方法、字段、变量、包名等。我们选择的名称就称为标识符,并且必须遵循如下规则:

  • 标识符不能是关键字或true、false、null。
  • 标识符可以包含字母、数字0-9、下划线(_)或美元符号($)。
  • 标识符的第一个字符必须是一个字母、下划线(_)或美元符号($)。
  • 标识符是区别大小写的,并且没有规定最大长度。
  • 必须见名知意

 

Java基础数据类型

Java语言本身内置了八种数据类型。这八种数据类型称为基本类型,是创建类的基本构造单元。表1列出了这八种数据类型占用的内存空间大小以及取值范围。

表1 Java的基本类型

数据类型

关键字

大小

取值范围

字节型

byte

1个字节(8位)

-27~27-1 (-128~127)

短整型

short

2个字节(16位)

-215~215-1(-327698~32767)

整型

int

4个字节(32位)

-231~231-1

长整型

long

8个字节(64位)

-263~263-1

单精度型

float

4个字节(32位)

±1.40239846E-45~±3.40282347E+8

双精度型

double

8个字节(64位)

±4.94065645841246544E-324~±79769313486231570E+308

字符型

char

2个字节(16位)

\u0000~\uFFFF

布尔型

boolean

不确定,由JVM决定

true、false

必须注意的是,与C语言不同的是,Java各数据类型(除布尔型以外)占用的内存空间是严格定义的。例如,整型是有符号的32位数据类型。因为Java程序是运行在JVM上,所以Java可以定义其基础数据类型的精确大小,以独立于程序所运行的平台。这样,下层的操作系统平台就不会影响到Java基础数据类型的大小和取值范围,从而保证了Java程序的可移植性。

 

基本数据转换

实数常量(如:2.3)默认为double类型,如果需要定义为float类型,需要在数字后方添加f或者F。

整数常量(如:123)默认为int类型,如果需要定义为long类型,需要在数字后加l或者L

 

Java数据类型提升规则

在Java中执行数学表达式运算时,有如下自动类型提升规则:

  • 所有的byte型、short型和char型将被提升到int型;
  • 如果其中有一个操作数是long型,那么计算结果就是long型;
  • 如果其中有一个操作数是float型,那么计算结果就是float型;
  • 如果其中有一个操作数是double型,那么计算结果就是double型。

 

Java中数据强制转换

数据强制转换后可能存在数据丢失,例如:int nuber = (int)(1+1.2)

>>输出number值为2,为int类型,小数部分就会丢失,只保留整数

>>大的数据类型转换为小的数据类型:强制转换

>>规则:小类型名 变量名 =(小类型名)(大数据变量)

注意:

加上强制转换符,可能会造成丢失精度或者溢出,使用时需要多加留心。

boolean 类型不能转换为其他数据类型

 

Java引用类型

当我们声明一个类类型的变量时,该变量就称为引用。我们用术语“引用”,是因为一个引用要指向一个对象。

引用类型与基本类型不同之处在于:引用不包含它所指向的对象的实际数据,而是指向内存中对象所在的位置。

主要分为三类:类class 、接口interface 、数组array 

 

Java常量

Java使用关键字final,来表示某变量实际上是常量,以保证其值不会改变。

习惯上,程序员通常将常量名的所有字母大写,这样在源代码中一眼就能瞥见它们。

 

声明变量和定义变量

  • Java程序中每一个变量都属于特定的数据类型,在使用之前都必须要对其进行声明
  • 变量声明格式的语法:数据类型  变量;
  • 声明变量之后,需要对变量进行初始化(养成习惯)
  • 变量初始化的语法:数据类型 变量名 = 初始值;

例如:

int i = 0;

 

变量作用域

局部变量:

  • 只在特定的过程或函数中可以访问的变量,被称为局部变量。
  • 与局部变量相对应的,是全局变量。
  • 全局变量就是从定义的位置起,作用域覆盖整个程序范围的变量。
  • 局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。
  • 一旦退出方法,构造函数或块中的变量将被销毁。
  • 访问修饰符不能用于局部变量。
  • 局部变量在堆栈级别内部实现。
  • 局部变量要先赋值,再进行运算,而实例变量均已经赋初值。(这是局部变量和实例变量的一大区别)

全局变量(成员变量):

其中实例变量、类变量、常量都是属于成员变量的,成员变量又被称为全局变量

java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量;另一种没有static修饰,为实例变量。

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:

(1)实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。

(2)静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。

(3)总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

静态变量均有默认值,数字默认为0,布尔值默认为false,对象默认为null。

 

注:

局部变量

定义:在方法内定义的变量称为“局部变量”或“临时变量”,方法结束后局部变量占用的内存将被释放。

全局变量

定义:全局变量,又称“外部变量”,它不是属于哪个方法,作用域从定义的地址开始到源文件结束。

注意事项:

当局部变量与全局变量重名时,起作用的是局部变量。

成员变量

定义:在类体的变量部分中定义的变量,也称为字段。

区别

java中没有全局变量的定义,这是C中的(我们通常称为成员变量或属性)
例:

class Demo{
    int x;// 非静态成员变量,又称为属性,对该类不同的对象来说,属性是不同的
    static int y;// 静态成员变量,一个类中只有一个该变量,该类不同的对象共享同一个静态成员变量
    public static void main(String[] args){
        int m = 0;// 局部变量,是方法内部定义的变量,只在方法内部可见,在该方法结束后,由垃圾回收器自动回收
    }
}

 

java运算符

表2列出了Java中的不同运算符。表中的运算符是按照它们在计算时的优先级别排序的,其中,增量/减量运算符的优先级最高。

表2 Java中的运算符和优先级

运算符分类

运算符

前置或后置增量/减量

++、- -

一元运算符

+、-、~、!、(强制转换)

乘法/除法/取模

*、 /、%

加/减/字符串连接

+、 -、 +

移位运算符

<<、 >>、 >>>

比较运算符

<、<=、 >、>=、instanceof

相等运算符

= =、 !=

按位运算符

&、|、 ^

条件 AND, OR

&&、||

三目运算符

? :

赋值运算符

=

扩展赋值运算符

*=、/=、%=、+=、–=、<<=、>>=、>>>=、&=、^=、|=

 

移位运算符总结

快速运算结果特点:

<<:一个十进制数a左移n位,就用该数a乘以2的n次方得到最终结果

>>:一个十进制数a右移n位,就用该数a乘以2的负n次方得到最终结果

例:10<<1   得到结果为20   计算方式:10*2^1

       10>1   得到结果为5    计算方式:10*2^(-1)

 

Java中instanceof关键字

java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

用法: 
result = object instanceof class 
参数: 
Result:布尔类型。 
Object:必选项。任意对象表达式。 
Class:必选项。任意已定义的对象类。 
说明: 
    如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

但是instanceof在Java的编译状态和运行状态是有区别的:

在编译状态中,class可以是object对象的父类,自身类,子类。在这三种情况下Java编译时不会报错。

在运行转态中,class可以是object对象的父类,自身类,不能是子类。在前两种情况下result的结果为true,最后一种为false。但是class为子类时编译不会报错。运行结果为false。

 

JAVA运行期数据存放

        一个正在运行的Java程序在内存中以进程的形式存在,Java虚拟机为该进程分配内存空间。而一个进程可以有一到多个线程,多个线程共享该进程的内存空间。每个线程是一个单独的执行单元。Java程序运行时,某些数据区是由程序中所有线程共享的,还有一些则只能由一个线程所拥有。

        每个Java虚拟机都有一个方法区和一个Java堆(Heap),它们是由该Java虚拟机中所有线程共享的。类文件的字节码以及常量池(常量和字面量)放在方法区,而程序运行时所创建的所有对象都放在堆中。

        当一个新线程被创建时,该线程就会被分配一个属于它自己的Java栈和PC寄存器。如果线程正在执行的是一个Java方法,那么PC寄存器的值总是指示下一条将被执行的指令。而它的Java栈则总是存储该线程中Java方法调用的状态,包括方法中的局部变量、被调用时传递进来的参数、返回值以及运算中间结果等。

        对于基本类型的变量,Java虚拟机将其放在Java栈中。

        对于引用类型的变量,引用变量本身放在Java栈中,而引用所指向的对象放在Java堆中。

 

Java注释

在Java中给代码添加注释的方法有三种技术,分别是:

  • Ø单行注释:用两个正斜线“//”注释掉斜线后的同行文本。
  • Ø多行注释:“/*”和“*/”符号用于多行代码的注释。用“/*”打开注释,“*/”关闭注释。所有在二者之间的文本都会被注释掉。
  • ØJavaDoc注释(文档注释):“/**”和“*/” 是一对特殊类型的注释符号,用于与javadoc工具一起生成包含注释的HTML文件。这些生成的HTML页面与Java代码一起提供给程序员,以帮助程序员理解代码的用途、用法。在Java中,这项功能被广泛使用。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值