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.布尔型
数据类型分类如下,画得难看将就吧:
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 |
八进制:开头加0 | 062 |
十进制:开头加0x | 0x32 |
二进制:开头加0b或0B | 0b110011 |
注意!用整型字面常量给各种类型(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+=y | x=x+y |
-= | x-=y | x=x-y |
*= | x*=y | x=x*y |
/= | x/=y | x=x/y |
%= | x%=y | x=x%y |
&= | x&=y | x=x&y |
<<= | x<<=y | x=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>3 | true | 6 |
< | 小于 | 6<3 | false | 6 |
>= | 大于 等于 | ‘b’>=‘a’ | true | 6 |
<= | 小于等于 | 5<=5 | true | 6 |
== | 等于 | 5==3 | false | 7 |
!= | 不等于 | 7!=7 | false | 7 |
注意:字符型比较的是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“