Java基础——初体验生存向解说Day2

学习编程语言必会的基础

写前聊一聊

《Java基础——初体验生存向解说》系列文章主要参考文献是《Java 2实用教程》,是博主的本科教材,使用感尚可,有需要的宝贝可以买来阅读。

因博主的个人习惯,IDE工具使用的是eclipse。

距离上一次碰Java语言,已经是整整一年了,很多基础知识博主都记得很模糊,如果有什么误人子弟的地方,欢迎大家指正。

前情回顾

在前文中,主要介绍Java语言的面向对象特性以及平台无关性。

相信宝贝们已经搭建好了实验平台,并跑了第一段代码。

你们真是太棒啦~

博主在系统学习Java语言之前,已经有了C语言的基础,包括在后期自学Python时,都包含本章内容将会介绍的东西。

可以说接下来你们将看到的,会是所有编程语言的基础。

那我们开始吧~(敲黑板)

基本数据类型

在Java语言中,基本数据类型共有8种,分别是boolean、byte、short、char、int、long、float、double,以上8种可被分为4大类。

(1)逻辑类型
boolean
常量:true,false
变量:使用关键字boolean声明逻辑变量

boolean beauty = true, beast;

(2)整数类型
int
常量:123,077(8进制),0x3ABC(16进制)
如果前缀加0为8进制、如果前缀加0x为16进制
变量:使用关键字int声明
内存:4个字节
取值范围:-231~231-1

int x = 12;

byte
变量:使用关键字byte声明
内存:1个字节
取值范围:-27~27-1

byte x = -12;

short
变量:使用关键字short声明
内存:2个字节
取值范围:-215~215-1

short x = 12;

long
常量:123L,077L(8进制),0x3ABCL(16进制)
相当于int型后面加上大写L
变量:使用关键字long声明
内存:8个字节
取值范围:-263~263-1

long x = 12L;

(3)字符类型
char
常量:单引号括起的Unicode表中的字符
变量:使用关键字char声明
内存:2个字节
取值范围:0~65535

char x = 'a'

注:有些字符不能通过键盘输入,需要使用转义字符,如:\n(换行)等。
(4)浮点型
float
单精度,后缀 f 不可省略
常量:123.4f
变量:使用关键字float声明
内存:4个字节

float x = 123.4f;

double
双精度,后缀 d 可省略
常量:123456.78d
变量:使用关键字double声明
内存:8个字节

double y = 123456.78;

在上述内容中,出现了常量与变量的概念。

常量意如其名,是永远不会变的量。比如一个整型12,它永远都会是12,12永远都不能变成13。变量也意如其名,是是不是会变的量。比如声明一个整型x,它可以被赋值为12,也可以被更改为13。那如果这时候我要把整型12变为浮点型12.0该怎么办呢?

以上几种基本数据类型(除去boolean类型)是有一个级别高低的,如果按从高到低的顺序排列:

double float long int char short byte //从高到低

当把级别低的变量的值给级别高的变量时(从右向左),会自动完成数据类型的转换,称为隐式转换

float x = 12; //输出值为12.0

当把级别高的变量的值给级别低的变量时(从左向右),需要强制数据类型转换,称为显式转换

int x = (int)12.97; //输出值为12

上述概念很好理解,帅哥可以被定义为男人,而男人不可能全都是帅哥,需要强制包装一下,比如给他八块腹肌。但是如果有了八块腹肌,就会失去保护腹肌用的脂肪,因此强制类型转换会导致精度的消失,姐妹们,使用需慎重。

然后问题就来了。Java属于静态强类型语言,不是不会进行隐式的类型转换吗?

是啊,我也纳闷呢。首先普及一下基本概念,来自百度百科。

动态语言是指在运行期进行类型检查的语言,即编写代码时可以不指定变量的数据类型,典型代表为Python语言。静态语言指在编译器进行类型检查的语言,即变量在使用前必须要声明变量。典型代表为C/C++以及Java。

强类型语言是指只能进行强制转换的,不允许隐式类型转换的语言,如Java。弱类型语言允许编译其进行隐式的类型转换,如C/C++。

如果按上述方法理解的话,似乎确实有矛盾的地方,博主在网上查找,也没有找到可以很好解释这一点的文章,如果有了解相关内容的大佬,欢迎科普。

数组

数组的定义有一维,也有多维。

float bella[]; //一维数组
char cat[][]; //二维数组

其中,bella是float类型变量,可以存放float类型数据;cat是char型。与C/C++不同的是,Java不允许在声明数组的方括号中指定数组元素个数。

数组也可以被同时声明:

int [] a,b[]; //等价 int a[], b[][];

声明数组后,要使用就需要为数组分配元素,即分配内存空间,如:

bella = new float[4];

分配元素后,数组bella将获取4个用来存放float类型数据的变量,通过数组变量的名字加索引使用数组元素。如:

bella[0] = 1.0f;
bella[1] = 2.0f;
bella[2] = 3.0f;
bella[3] = 4.0f;

二维数组是由若干个一维数组构成的,如:

int a[][] = new int[3][4]; //由3个长度为4的一维数组构成

二维数组的一维数组也不必有相同的长度,如:

int b[][] = new int[3][];
b[0] = new int[6];
b[1] = new int[7];
b[2] = new int[8];

创建数组后,系统会给数组的每个元素一个默认的值为0。在声明数组的同时也可以给数组元素一个初始值:

float bella[] = { 1.0f, 2.0f, 3.0f};

相当于:

float bella[] = new float[3];
bella[0] = 1.0f;
bella[1] = 2.0f;
bella[2] = 3.0f;

运算符

优先级描述运算符结合性
1分隔符[] () . , ;右到左
2对象归类,自增自减运算,逻辑非instanceof ++ – !左到右
3算数乘除* / %左到右
4算术加减+ -左到右
5移位运算>> << >>>左到右
6大小< <= > >=左到右
7相等== !=左到右
8按位与&左到右
9按位异或^左到右
10按位或|左到右
11逻辑与&&左到右
12逻辑或||左到右
13三目条件?:左到右
14赋值=右到左

上述表格中的三目条件用法如下:

max = (a>b)?a:b //若a>b为真,则返回a,为假,则返回b

相当于:

if(a>b){
	max = a;
	}
else {
	max = b;
	}

条件分支语句

if
如果(表达式为真)就(执行若干语句)

if(表达式){
	若干语句
}

if-else
如果(表达式为真)就(执行若干语句1)
否则(表达式为假,执行若干语句2)

if(表达式){
	若干语句1
}
else{
	若干语句2
}

if-else if-else
如果(表达式1为真)就(执行若干语句1)
否则(表达式2为真)就(执行若干语句2)

否则(以上全部为假,执行若干语句n)

if(表达式1){
	若干语句1
}
else if(表达式2){
	若干语句2
}
...
else{
	若干语句n
}

switch
根据表达式的值进行比对常量值,如果相同则选择一个分支,遇到break退出。如果没有相同的分支,则执行default中的语句后退出。

switch(表达式)
{
	case 常量值1:
		若干语句
		break;
	case 常量值2:
  		若干语句
  		break;
  		...
  	case 常量值n:
    		若干语句
    		break;
 	default:
 		若干语句
 }

注:if类语句属于单分支操作,只能执行一个分支;switch类语句如果好好利用break,可以执行多分支操作。

循环语句

一言以蔽之,循环语句就是满足括号内容,反复执行循环体中的内容。
for

例如:for(i=0;i++;i<10)

for(变量初始化;循环条件;改变循环条件){
	若干语句
}

while

如果表达式为真,执行循环体,否则跳出循环。

while(表达式){
	若干语句
}

do-while

先执行循环体一次,如果表达式为真,再次执行循环体,否则跳出循环。

do{
	若干语句
}while(表达式);

break和continue语句

执行break语句,则整个循环结束,跳出循环;
执行continue语句,则本次循环结束,开始下一次循环。

以上内容,全文背诵( 叮 ~ 咚 ~ 当 ~ 咚 ~ )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值