java定义数据类型语句_Java入门笔记(三)数据类型与基本语法

数据类型与变量

变量和标识符

变量声明和赋值与C++一致,注意float

标识符:字母、数字、下划线、美元符号组成,不可以用数字开头

Java书写习惯:类名首字母大写;包名、方法名、变量名都要小写(camel);少用下划线;常量随用随定义

数据类型

数据类型决定数据的存储方式和运算方式

Java中的数据类型分为两大类:基本数据类型和引用类型

基本数据类型 primitive types

数值型(整数、浮点数)、字符型、布尔型 byte short int long(8字节) float double boolean char(null)

基本数据类型变量存储在栈中

赋值时,复制的是值

整型

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\)

整数:8进制0开头,16进制0x开头 二进制0b开头

java中没有无符号数,如果想要正整数,可以用long模拟

浮点数

float单精度 4字节 -3.403E38 ~ 3.403E38

double双精度 8字节 -1.798E308 ~ 1.798E308

千分位可以用下划线表示,如123_456.789_000

科学记数法:1.14E2

浮点类型默认为double类型,如果想要声明float类型变量,需要在后面添加一个f,如float d = 3.14f

布尔类型 boolean

boolean只允许true或false

不可以用0或者非零的值代替

字符 char

Java字符采用Unicode编码,每个字符占两个字节

可用16进制编码表示,如char c1='\u0061'

引用类型 reference type

类(class)、接口(interface)、数组

变量引用在堆中,栈中其实是一个指针

赋值时,复制的是引用,没有复制对象本身

运算符与表达式

运算符

算术运算符 + - * / % ++ --,和 C++都一样

关系运算符 < > <= >= == !=,和 C++都一样

逻辑运算符 ! & | ^ && ||,和 C++都一样

p.s. 短路与、短路或两个运算符,如果第一个表达式可以得到判断结果,不会进行后方的表达式的计算

位运算符 & | ^ ~ >> << >>>,和 C++都一样

(1) 左移 <

(2) 右移 >>:将二进制形式的a逐位右移b位,最高位空出的位补原来的符号位

(3) 无符号右移 >>>:右移最高位补0

移位运算符对于低于int型的操作数会先自动转为int(整型提升)

p.s. 虽然java没有无符号这一说,但是无符号右移运算很重要,使用Integer.toBinaryString()转化成二进制字符串检查

赋值运算符 =

当=两侧数据类型不一致时,可以使用默认类型转换或者强制类型转换

扩展赋值运算符 += -= *= /=等

字符串连接运算符 +

当+两侧只要有一个是字符串类型,其他数据都会被自动转换为字符串类型

表达式

运算优先级与结合性(尽量用括号)

结合性

操作符

R-L

++, --, ~, !, (类型转换)

L-R

*, /, %

L-R

+, -

L-R

<>, >>>

L-R

, <=, >=, instanceof

L-R

==, !=

L-R

&

L-R

^

L-R

|

L-R

&&

L-R

||

R-L

?:

R-L

=, *=, /=, ...

类型转换

整型提升:byte short char参与运算转为int

注释

//:单行注释

/.../:多行注释,不能嵌套

/**...*/ doc注释,可以用来生成文档

@see:引用其他类

@version:版本信息

@author:作者信息

@param:参数说明

@return:说明

@exception:异常说明

流程控制语句

顺序

简单语句:方法调用语句、赋值语句等,记得加分号

没有表达式语句 如 x+y;

分支

和C++一样

if语句

if(){

语句;

}

else{

语句;

}

// 最多两个分支,可以else if

switch语句

变量类型是数数、字符、字符串

case后面的value得是常量

switch(var){

case value1:

语句1;

break;

case value12:

语句2;

break;

...

default:

语句;

break;

}

循环

和C++一样

for,while,do while

for(初始条件; 终止条件; 循环操作){ 语句}

while(循环条件){ 语句 }

do{ 语句 }while(循环条件);

在循环中,可以使用标签来控制bbreak和continue跳出的位置

lable1: {

lable2: {

lable3: {

break label2;

}

}

}

数组

一维数组

int[] a = new int[]{3,4,5};

// 不要写int[] a = new int[3]{3,4,5}

Person[] p = new Person[]{new Person(1), new Person(2), new Person(3)};

int[] a = new int[3];

a[0] = 3;

a[1] = 4;

a[2] = 5;

数组需要使用new分配空间后使用,在java中,C++的int a[5];写法是不对的,因为java中的数组只是一个引用,引用堆中的五个元素空间

数组一经分配空间,每个元素也被按照成员变量同样的方式被隐式初始化,数值类型初始化为0,引用类型为null

数组分配空间后,大小固定,有一个length属性来指明长度,如a.length,C++中没有大小

数组遍历:for(int age : ages),ages数组中的每一个元素age,这是只读式的遍历,不能赋值

数组的复制:System.arraycopy(source, start_index, dest, target_index, source.Length)

二维数组

int [][] a = {{1,2}, {3,4,0,9}, {5,6,7}};

int [][] m = new int[3][5];

int [][] t = new int[3][];

t[0] = new int[2];

t[1] = new int[4];

t[2] = new int[3];

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值