02 : 数据结构

前言

标识符

可以简单的理解为一个名字。

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

  • 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符
  • 不能以数字开头
  • 标识符是严格区分大小写的
  • 标识符的命名最好能反映出其作用,做到见名知意

关键字

在java语言中已经被赋予特定意义的一些单词。一共有53个关键字。

其中有两个保留字:const和goto。

关键字不能被用作标识符!!

注释

Java代码的解释说明。不影响程序的运行,用于辅助读程。

//单行注释

/*    多行注释   */

/**     文档注释     */

变量

在JAVA中,有的数据值是不固定的,总在变,我们还需要记录这些值,我们可以把这些值理解为变量。

我们通过三个元素来描述变量:变量类型,变量名以及变量值。

int age=18;   //声明int类型的变量并赋值

String tel;  //声明String类型的变量

注意:

  • 变量名必须是一个有效的标识符
  • 变量名不可以使用java关键字
  • 变量名不能重复

常量

在程序运行过程中一致不会改变的量成为常量

基本类型(八种)

介绍

 

类型名称

字节空间

范围

整数型

byte

1

-27到27-1   或者   -128到127

short

2

-215到215-1

int

4

-231到231-1

long

8

-263到263-1

浮点型

float

4

单精度,对小数部分的精度要求不高

double

8

双精度,精确的小数部分并操作值很大时

字符

char

2

0到65535

布尔

boolean

1

真true  假false

示例


输出结果


类型的字面值(5条)

整数字面值是int类型

int a = 999999999999999; //超出了int的取值范围

byteshortchar三种比int小的整数可以用范围内的值直接赋值

byte b = 127;//可以的,因为127byte的取值范围内

byte b2 = 128; //错误,因为128的字面值是int类型,是4字节,byte1字节,放不开

浮点数的字面值是double类型

double b = 1.5;

字面值后缀LFD

long a = 999999999999L;// 999999999999字面值是int类型,但是超出int取值范围就报错了,只能扩大数据范围,加后缀L,从int转成long

float b = 3.0F;//3.0字面值是double类型,加后缀L,从double转成float

double d = 3D;//3字面值是int类型,加后缀D,从int转成double

进制前缀

0b    -2进制   如: 0b0010

0     -8进制   如:076

0x    -16进制  如: 0x0986

\u    -char类型,16进制  如: \u0000

基本类型的类型转换


小到大/隐式转换
大到小/显式转换

需要强制类型转换

package cn.tedu.basic;

 

public class Test {

 

       public static void main(String[] args) {

              //小转大--隐式转换

              short a = 10;

//小转大,右侧的a是小类型,左侧b是大类型,详单与拿着小类型给大类型,可以直接赋值

              long b = a;

             

              //大转小--显式转换--强制转换--(小类型)

              double m = 10.8;

       //右侧m是大类型,左侧n是小类型,拿着大类型直接给小类型赋值--不行

              int n = (int)m;

             

       }

 

}

浮点数转成整数→小数直接舍弃

不管0.1还是0.9全都舍弃。

运算规则(5条)

计算结果的数据类型,与最大类型一致

System.out.println(3/2);//1

byte,short,char三种比int小的整数,运算时会先自动转换成int

byte a = 1;

byte b = 2;

//byte c = a+b;

//错误,因为a+b运算时自动变成int类型,大类型,给小类型byte类型赋值,---不能直接赋值--强转

byte c = (byte)(a+b);

整数运算溢出

整数运算,类似于一个钟表,转到最大时,再转会回到最小。

计算:光速运行一年的长度是多少米。3亿m/s

System.out.println(300000000L*60*60*24*365);

//整数运算溢出解决方案:超出int范围的整数运算会溢出,可以扩大数据范围,加L,变成long类型

浮点数运算不精确

System.out.println(1-0.8);

//0.19999999999999996

浮点数的特殊值

Infinity 无穷大  3.14/0

NaN  not a number   0/0.0

运算符

概述

 

算术运算符

+ - * /

基本运算

%

模 / 取余数  10%3结果是1   5%2结果是1   n%2==0

++     --

自增    自减

比较运算符

结果是boolean类型

==

相等比较   1==1 结果是true

!=

不等比较   1!=1结果是false

逻辑运算符

结果是boolean类型

&&    &

逻辑与(短路与),两边同为真结果才为真

||       |

逻辑或(短路或),两边只要有一个真结果就是真

+

字符串连接

非,非真是假,非假是真

三元运算符

?  : 

三项运算

1  ?   2   :   3  

1是真取2,1是假取3

赋值运算符

=

赋值运算

+=    -= 

*=    /=

复合的赋值运算

a=a*21 ;   // a *= 21;

 

 &  -- 是并且的关系(单与)

    1 & 2 想要得到最终结果是true,对于12的要求是:必须都得是true

 

&& -- 是并且的关系(双与/短路与)

    1&& 2 高效,当1结果是false时,2会被短

 

 

|  -- 是或者的关系

    1 | 2 想要得到最终结果是true,对于12的要求是:1或者2有一个是true就可以

 

 

|| -- 是或者的关系(双或/短路或)

    1 || 2 高效,当1的结果是true时,2会短路

 

案例


 

posted @ 2019-12-31 23:08  aqin1012  阅读(343)  评论(0编辑  收藏  举报