java篇 第二章 java语法基础

本文深入浅出地介绍了Java的基础语法,包括标识符与关键字、数据类型、变量与常量的区别,以及各种运算符的使用方法等内容。

1.标识符和关键字

1.1.标识符

1.1.1什么是标识符

由多个字符按一定规则构成的一个名称

1.1.2.标识符规范

1.标识符由26个英文字符大小写(azAZ)、数字(0~9)、下划线(_)和美元符号($)组成。
2.不能以数字开头,不能是关键字
3.严格区分大小写
4.标识符的可以为任意长度,但不宜过长

1.2关键字

关键字是java语言系统中赋予了特殊意义的标识符,程序员不能把关键字当成普通标识符使用
在这里插入图片描述

2.基本数据类型

java数据类型分为两大类,即基本数据类型和引用数据类型
而基本数据类型分为三大类:1.数值型 2.字符型 3.布尔型

数据类型分类如下,画得难看将就吧:

数据类型
基本数据类型
引用数据类型
数值型
字符型char
布尔型boolean
整数类型 byte,short,int,long
浮点类型 double,float
类 class
接口 interface
数组

2.1.布尔型

布尔型数据表示逻辑上的“真”或“假”。java语言用关键字boolean定义布尔型变量,布尔数据在内存中占1字节,其值只能是true或false

2.2.整数类型

整数类型包括正整数和负整数,分类为4种:byte(字节型),short(短整型),int(整型),long(长整型)

2.2.1.byte

一个byte数据在内存中占1字节,数值范围是-128~127

2.2.2.short

一个short数据在内存中占2字节,数值范围是-32768~32767

2.2.3.int

一个int数据在内存中占4字节,数值范围是-2147483648~21474483647

2.2.4.long

一个long数据在内存中占8字节,数值范围是-263~263-1

2.3浮点类型

带有小数的数值即浮点类型,浮点类型一般分为float(单精度型)和double(双精度型)两种

2.3.1.float

一个float数据在内存中占4字节,数值范围是1.4E-45~3.4028235E38

2.3.2.double

一个double数据在内存中占8字节,数值范围是4.9E-324~1.7976931348623157E308

2.4.字符型

关键字 char表示字符型。一个字符型数据在内存中占2字节,单个字符属于字符型数据。字符型必须使用单引号括起来,如‘a’,‘b’.

3.变量

程序中数据有两种存在方式:一是变量,二是常量

变量就是程序员给存储单元起的名字,存储单元存储的数据就是变量的值。

变量名
可变存储单元

在程序执行过程中,存储单元存放的数据可以改变,即变量是可变的“量”

3.1.变量的定义

变量有自己的数据类型,在使用变量前必须定义变量,定义变量就是告诉编译器这个变量的类型,这样,编译器才知道该为变量分配多大的存储单元,保存什么类型数据。

例子:

public class definevar{
	public static void main(String args[])
	{
		int age=10;
		char varchar='a';
		System.out.println("age="+age+"   "+"varchar="+varchar);
		age=80;
		varchar='b';
		System.out.println("age="+age+"   "+"varchar="+varchar);
	}
}
d:\java\训练\ch4>javac definevar.java

d:\java\训练\ch4>java definevar
age=10   varchar=a
age=80   varchar=b

3.2.变量的三要素

3.2.1.变量名

程序员给变量起的名字,如上面程序中的age和varchar

3.2.2.变量数据类型

定义变量时指定的数据类型,编译器根据变量类型来分配存储单元大小,如上面程序中的char 和 int

3.2.3.变量的作用域

指变量起作用的范围,上面程序,age和varchar定义在main函数中,故其作用域为main函数内

4.常量

分类:常量分为符号常量和字面常量

4.1符号常量

4.1.1符号常量介绍

符号常量也是程序员给某个存储单元起的名字,只不过在程序执行期间,符号常量的值保持不变。

常量名
不可变存储单元
4.1.2.符号常量定义

符号常量使用final定义。一般来说,符号常量的名称都用大写字母表示

例:

public class ComputeCircle{
	public static void main(String args[])
	{
		final double PI=3.141592653589793238462643383279;
		double r=5;
		System.out.println("圆的半径:"+r);
		System.out.println("圆的周长:"+2*PI*r);
		System.out.println("圆的面积:"+r*r*PI);
	}
}
d:\java\训练\ch5>javac ComputeCircle.java

d:\java\训练\ch5>java ComputeCircle
圆的半径:5.0
圆的周长:31.41592653589793
圆的面积:78.53981633974483

符号常量或变量被定义后可以通过赋值语句复制,但常量只能赋值一次,变量则可以赋值多次。

4.2.字面常量

4.2.1.字面常量介绍

在给变量赋值时,这个值往往就是字面常量,例如:int age=10,中10就是一个字面常量

4.2.2.字面常量分类

字面常量分三大类:基本类型字面常量,字符串类型字面常量,和布尔类型字面常量

4.2.2.1.整数字面常量

整数字面常量可以用不同进制数表示,具体表示如下表

特征举例
十进制:无50
八进制:开头加0062
十进制:开头加0x0x32
二进制:开头加0b或0B0b110011

注意!用整型字面常量给各种类型(byte,int,short,long)的变量赋值时,一定不要超过变量允许的范围

//错误语句
byte x=130;
//byte类型范围是-128~127,已超出!错误!

给long类型变量赋值时,字面常量后要加上字母l或L,如果不加,就会把该字面常量当作int类型,例如:

//错误语句L
long x=2147483648;
//int类型范围是-2147483648~2147483647,已超出!错误!
//改进
long x=2147483648L;
4.2.2.2.浮点型字面常量
4.2.2.2.1.浮点型介绍

浮点型字面常量分为两种:float和double
float型表示:11.2f,33.2f,777.0f
double型表示:4.0d(double型d可省略),32.55,9.55

注意!书写float字面常量时必须在末尾加上f,否则会被当作double字面常常,例如:

float x=888.0;   //这里888.0等同于 888.0d
4.2.2.2.2.浮点型组成

整数部分 + 小数点 + 小数部分 + 幂(可选)

如:
2.35
整数部分是2,小数部分是35,无幂
0.5E12
整数部分无,小数部分5,幂12

当整数部分为0时,则可省略,如0.5可写做.5

4.2.2.3. 布尔型字面常量

布尔型字面常量只有两个值:true和false

4.2.2.4.字符型字面常量

字符型字面常量即是用单引号括起来的字符值如:‘a’,‘b’,’!’,‘7’,‘爱’.

也可以用unicode代码表示字符型字面常量,但要转换为16进制使用
如:
b的unicode码为98,所以用unicode代码表示就需要将98转换为16进制62,再‘\u0062’如此表示

转义字符作用Unicode表示
\n回车(\u000a)
\t水平制表符(\u0009)
\b空格(\u0008)
\r换行(\u000d)
\f换页(\u000c)
单引号(\u0027)
"双引号(\u0022)
\反斜杠(\u005c)
\ddd三位八进制
\udddd四位十六进制

char类型的变量和常量都可以像int型数据一样参与运算,如果把一个0~65535范围内的int型数据赋予char变量,则编译器会自动把它当作char型数据处理

5.基本类型转换

类型转换可分为两种:
1.自动转换:不需要程序员干预,系统自动进行
2.强制转换:程序员必须使用类型转换符进行转换,可能会导致精度的丢失

5.1.基本数据类型精度排序

byte< short < int < long < float < double

5.2.自动转换

从低精度向高精度转换属于自动转换

5.2.1.赋值语句转换
float xx=500; //把整数500转换为浮点型,结果为500.00
5.2.2.表达式中的数据类型转换
int h=73;
float y1=27.8f;
double=y1+73;

在计算表达式y1+73前,系统自动将73转换为float型。

5.3.强制转换

从高精度向低精度转换属于强制转换

(type)data  //将data数据转换为type类型
int x=(int)600.9f; 

会导致精度丢失

6.运算符和表达式

运算符是一种特殊符号,它规定了数据之间的计算规则,根据运算符性质,可分为七种:
1.赋值运算符
2.算术运算符
3.关系运算符
4.逻辑运算符
5.条件运算符
6.位运算符
7.其他运算符

表达式是用运算符把常量、变量、结合在一起构成的式子(单独一个变量或常量也算),如:PIrr

6.1. 赋值运算符

“=”是赋值运算符,其作用是给变量赋值,“=”左边必须是一个变量,右边则是一个表达式

6.1.1.“=”右边是表达式
int age=2;
char c1='w';
char c2=c1;
int x=5,y=20;
int z=2*x+y-30;
6.1.2.复合赋值运算符
运算符演示等价于
+=x+=yx=x+y
-=x-=yx=x-y
*=x*=yx=x*y
/=x/=yx=x/y
%=x%=yx=x%y
&=x&=yx=x&y
<<=x<<=yx=x<<y

6.2.算术运算符

依据运算符连接数据的个数可以分为三种:
1.一元运算符
2.二元运算符
3.三元运算符(条件表达式,此处先不讲)

6.2.1.一元运算符

一元运算符只操作一个数据,它们是:
+(正)
-(负)
++(自增)
–(自减)

6.2.1.1. +、- 运算符
+5  //表示整数
-6   //表示负数
6.2.1.2. ++、-- 运算符
++x       //使x值加1,表达式的值同时加1
--x       //使x值减1,表达式的值同时减1
x++       //使x值加1,表达式的值不变
x--       //使x值减1,表达式的值不变   

例:

int x=1;
int y=1;
int k1=++x;      //k1得到值2
int k2=--x;      //k2得到值0
//x值为2,y值为0

int i=1;
int j=1;
int k3=i++;      //k3得到值1
int k4=j--;		 //k4得到值1
//i值为2,j值为0
6.2.2. 二元运算符

二元运算符即是对两个数据进行操作,有:
1.+(加)
2.-(减)
3.*(乘)
4./(除)
5.%(取余)

6.2.2.1. +、-运算符

+、- 运算符的优先级是4级,其结合方向是从左到右:

7+8-5     //先计算7+8再用结果 - 5
6.2.2.2. *、/和%运算符

*、/、% 运算符的优先级是3级,其结合方向是从左到右:

12%5      //求余运算,12/5余2
5*3/5     //先求5*3,再用结果 / 5
6.2.3. 算术表达式

用算术运算符和括号连接起来的式子称之为算术表达式:

x+2*y-30+30(y+5)

整个算术表达式的类型是数值类型,即整型和浮点型

6.3. 关系运算符

6.3.1.关系运算符含义

关系运算符可以比较两个数据的大小关系,其结合方向是从左到右:

运算符含义举例运算结果优先级
>大于5>3true6
<小于6<3false6
>=大于 等于‘b’>=‘a’true6
<=小于等于5<=5true6
==等于5==3false7
!=不等于7!=7false7

注意:字符型比较的是unicode码

6.3.2.关系表达式

用关系运算符和括号连接起来的式子称为关系表达式,其值为boolean型。例:

’w‘>'t'      //表达式值为true
(x+y)>80     //设x=20,y=90,则表达式值为true

6.4.逻辑运算符

6.4.1.逻辑运算符含义

逻辑运算符其操作对象必须是boolean类型。(布尔型常量、变量、表达式)

运算符举例含义结果
&&a&&b短路与ab 全为 true 时,计算结果为 true,否则为 false。 2>1&&3<4 true
!!a逻辑非a 为 true 时,值为 false,a 为 false 时,值为 true !(2>4) true
&a&b逻辑与ab 全为 true 时,计算结果为 true,否则为 false 1<2&3<5 true

或类型就不放在表格了,因为我不知道怎么包“|”放进表格

||:短路或 
a || b     
#ab 全为 false 时,计算结果为 false,否则为 true。 2<1||3>4 false 
|:  逻辑或 
a|b     
#ab 全为 false 时,计算结果为 false,否则为 true 1>2|3>5 false 

6.4.2.逻辑表达式

用逻辑运算符和括号连接起来的式子叫逻辑表达式,逻辑表达式的值为boolean型

True||False

6.5.条件运算符

条件运算符是唯一的三元运算符,运算符包括‘?’和‘:’

关系表达式?表达式为真的结果:表达式为假时的结果
6.5.1.条件运算符含义

条件运算符举例

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

#上述代码等价于:
k= a>b?a:b;
6.5.2.条件表达式

只要你用了条件运算符都叫条件表达式。

6.6.位运算符

操作时把数据转换为二进制再处理。

运算符名称功能
~按位非按字节取反
&按位于将两个数据的二进制进行对比,同时为1则取1
^按位异或将两个数据的二进制进行对比,一真一负则取1
>>右移二进制右移一定位数,高位补零,低位丢掉
<<左移二进制左移一定位数,低位补零,高位丢掉

6.7.其他运算符

6.7.1.点运算符

点运算符“.”用来访问对象的成员变量或成员方法

6.7.2.new运算符

可以用new运算符来创建一个对象或数组

6.7.3.instanceof运算符

判断对象中的实例,结果是boolean型,如果是则true,如果否,则false

对象 instanceof 实例 

7.编程风格

7.1.注释

单行注释 //

//  语句

多行注释 /* */

/*  语句  */

文档注释 /** */

/*    *语句     */

7.2.命名规范

行规:
1.变量名和方法命名小写,如果由多个单词组成,则应遵循小波峰原则(第一个单词小写,从第二个开始首字母大写)
2.类命名因应遵循大波峰原则(每个单词首字母大写)
3.符号常量应所有字母大写,单词间用"_"相连。

(不能和关键字冲突)

7.3.程序风格

没啥就是让你记得加缩进,为了好看
一般有两种对其方式

public class test
{
	public static void main(String[] args)
	{
		System.out.println("Block style");
	}
}

2

public class test{
	public static void main(String[] args){
		System.out.println("Block style");
	}
}

8.程序错误

8.1.编译错误

最好改,照着书改错。

8.2.运行时错误

比如除数为零

8.3.逻辑错误

多见于喜欢抄代码,但老是抄漏的小朋友,重新一步一步理清逻辑。

9.本章小结

标识符组成:字母、数字、下划线和美元
数据类型:基本和引用,基本分为整型、字符型、浮点型、布尔型
运算符包括:赋值、算术、关系、逻辑、条件、位、其他
常量变量:都是为内存单元赋值,常量无法改制
错误:编译错误、逻辑错误、运行时错误

10.习题

1.测试下列程序
public class Test
{
	public static void main(String[] args)
	{
		for (int i=1;i<20;i++)
			System.out.println((char)i);
		System.out.println(i/5);
	}
}

参考答案:说明了什么?说明了,在for中可以设置局部变量

Test.java:12: 错误: 找不到符号
                System.out.println(i/5);
                                   ^
  符号:   变量 i
  位置: 类 Test
1 个错误

2.编写程序计算圆柱体积,输入半径和高

底面积=半径 * 半径 * 3.14
体积=面积*高

参考答案

import java.util.Scanner;
public class CircleArea
{
	public static void main(String[] args)
	{
		Scanner reader=new Scanner(System.in);
		System.out.print("请输入圆半径:");
		double r=reader.nextDouble();
		System.out.print("请输入圆柱体的高:");
		double h=reader.nextDouble();
		System.out.print("圆柱体积为:"+r*r*3.14*h);
	}

}
3.输入一个数字,输出各位数字之和

参考答案

import java.util.Scanner;
public class gewei{
	public static void main(String[] args)
	{
		Scanner reader = new Scanner(System.in);
		System.out.println("请输入整数:");
		int num=reader.nextInt();
		int sum=0;
		for(int i=num;i>0;i/=10)
		{
			 sum+=i%10;		
		}
		System.out.println("各位数和为:"+sum);

	}

}
4.输入一个数判断是否在1~100之间

参考答案

import java.util.Scanner;
public class fanwei

{

	public static void main(String[] args)

	{

		Scanner reader = new Scanner(System.in);

		System.out.println("请输入一个double型数据:");

		double number = reader.nextDouble();

		if (number >= 1 && number <=100)

			System.out.println("the number "+number+" between 1 and 100 is ture");

		else

			System.out.println("the number "+number+" between 1 and 100 is false");

	}

}
5.解释关键字的概念,关键字和标识符有什么区别

参考:关键字是被java赋予特殊意义的标识符,是特殊的标识符,程序员不能将其作为自定义标识符的名字。

6.下列哪些是java关键字

class public int x y radius import final
参考答案:略

7.分别找出数值型中最大值的类型和最小值的类型

参考答案:略

8. 27/4的结果是什么,如果想得到浮点数结果,应该怎么写?

参考答案:

public class test
{
	public static void main(String[] args)
	{
		System.out.println(27/4);
	}
}
D:\java\训练\ch10>javac test.java

D:\java\训练\ch10>java test
6

为6,整型,如果需要结果为浮点数这则需要参与运算的其中一个数为浮点数,如24/4.0

9.将下面java算术表达式翻译为正常数学表达式

4/(3*(r+34))-9*(a+bc)+(3+d(2+a))/(a+b*d)
参考答案:略

10.如何将十进制字符串转换为float?如何将整形字符串转换为int

参考答案:(float)字符串 (int)字符串

public class test
{

	public static void main(String[] args)

	{

		String str="123.2";
		String str1="1231";
		float i=Float.valueOf(str);
		int b=Integer.valueOf(str1);
		System.out.println(i);

		System.out.println(b);

	}

}
11.字符型字面常量的两种表示形式

参考: ‘r’ 和”\u0000“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值