day02复习
第1章:Java语言概述
HelloWorld的总结:
/*
一、编写的说明
1. 大括号的位置:行尾的风格
2. 必要的代码缩进
3. 每一条执行语句都换行书写
4. 必要操作符与变量之间的空格
二、
1. Java是严格区分大小写的
2. 一个Java源文件中可以声明多个java类。则在编译源文件之后,会声明对应的java类的字节码文件。
3. 源文件中最多有一个类使用public进行修饰;使用public修饰的类的类名必须与源文件名相同。
4. 一般在开发中,一个源文件中,只声明一个java类。
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
System.out.println("Hello World!" + "\n");
int num1 = 10;
int num2=20;
}
}
class HelloChina{
}
class HelloWH{
public static void main(String[] args) {
}
}
常用的开发工具:
- 文本开发工具:EditPlus \ NotePad++ \ TextPad \ …
- IDE:Eclipse \ IDEA
第2章:变量与运算符
1. 关键字与保留字
- 关键字:
定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写
-
常用的关键字有:(不需要记忆)
-
保留字
现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字
目前的保留字有:goto 、const
2. 标识符
- 什么是标识符?
Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符
技巧:凡是自己可以起名字的地方都叫标识符。比如:类名、变量名、方法名、接口名、包名等
- 标识符命名的规则?
> 由26个英文字母大小写,0-9 ,_或 $ 组成
> 数字不可以开头
> 不可以使用关键字和保留字,但能包含关键字和保留字
> Java中严格区分大小写,长度无限制
> 标识符不能包含空格
结论:如果不遵循上述规则的话,编译(javac.exe)失败!
- 标识符命名的规范?
> 包名:多单词组成时所有字母都小写:xxxyyyzzz
> 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
> 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
> 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
结论:如果不遵循上述规范的话,编译能通过。但是建议大家遵守上述的规范。
-
标识符在命名时,大家尽量要“见名知意”
-
对应的代码
class IdentifierTest { //类名IdentifierTest就是标识符
public static void main(String[] args) {
System.out.println("Hello World!");
int myAge = 18;
int mynumber = 1001;//不遵循规范,但是编译能通过。
System.out.println(mynumber);
//int i1 = 10;
//int i2 = 20;
}
}
class AB123_$C{
}
class _1Hello{
}
class public1{
}
class Static{
}
class hellowuhan
{
}
3. 变量
3.1 变量的声明
变量声明的格式:变量类型 变量名 = 变量值
代码演示:
class VariableTest1 {
public static void main(String[] args) {
//定义一个学生的年龄,赋值为18
int myAge = 18;
//定义一个学生的学号,赋值为1001
int myNumber;//变量的声明
//System.out.println(myNumber + 1);//编译不通过,因为没有初始化赋值
myNumber = 1001;//变量的赋值
System.out.println(myAge);
//接下来的代码中都可以使用myAge或myNumber
//编译不通过,因为在相同作用域内,不允许定义同名的变量
//int myAge = 20;
System.out.println(myAge + 10);
//编译不通过,因为之前没有定义过myWeight变量
//myWeight = 70.5;
}
public void show(){
//System.out.println(myAge); //超出了myAge的作用域,所有编译不通过
}
}
- 说明
① 变量需要先声明后使用
② 变量都有其对应的作用域。只在其作用域内是有效的。
③ 相同作用域内,不允许定义同名的变量
3.2 变量的分类
- 针对于变量值,要求:① 满足变量的类型 ② 在指定类型允许的数据范围内定义,超出范围会报错。
int myAge = 18;
//报错,因为数据超出了int的范围
//myAge = 186345634565465436345;
System.out.println(myAge);
分类:
2. Java 语言是强类型的语言,即每个定义的变量都需要显式的标识其具体的数据类型。
3. 变量按照数据类型来分:
类型一:基本数据类型 (8种)
整数类型:byte \ short \ int \ long
浮点类型:float \ double
字符类型:char
布尔类型:boolean
类型二:引用数据类型
类(比如:String)、接口、数组
4. 补充:变量还可以按照在类中声明的位置进行分类: 成员变量 vs 局部变量。
3.3 具体的基本数据类型的使用
- 整型
//1. 整数类型:byte (1字节=8bit) \ short (2字节)\ int (4字节)\ long (8字节)
//① byte:表数范围是-128 ~ 127
byte b1 = 12;
//b1 = 128;//编译不通过
System.out.println(b1);
short s1 = 1235;
int i1 = 23423;
//② 定义long类型变量时,后缀以"l" 或 "L"结尾
long l1 = 32432423423L;
//③ 开发中,定义整型变量时,常常使用int类型。
l1 = 345345345l;
- 浮点型
//2. 浮点类型:float (4字节) \ double (8字节)
//① float在声明时,后缀以"f"或"F"结尾
float f1 = 12.3F;
//float f2 = 43.32; //编译不通过
double d1 = 432.353;
double d2 = .432;
System.out.println(f1);
//System.out.println(f2);
System.out.println(d1);
System.out.println(d2);
//② 开发中,定义浮点类型变量时,常常使用double类型。
//③ float表示数据的范围要大于long类型表示数据的范围
- 字符型
//3. 字符类型:char(1字符 占用2个字节)
//① 使用一对''表示一个字符
char c1 = 'a';
char c2 = '我';
char c3 = '+';
char c4 = 'シ';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
//编译不通过
//char c5 = 'ab';
//编译不通过
//char c6 = ''; //String str = ""; 编译通过
//② 除了声明的char中只有一个字符之外,还有另外两种情况:
//情况一:声明转义字符
char c7 = '\n';//换行
char c8 = '\t';//制表符
System.out.println("hello" + "world");
System.out.println("hello" + c7 + "world");
System.out.println("hello" + c8 + "world");
//情况二:直接使用 Unicode 值来表示字符型常量
char c9 = '\u0041';
char c10 = 'A';
System.out.println(c9);//A
//情况三:放到变量的运算处解释
char c11 = 97;
//char c12 = '97';
- 布尔类型
//4. 布尔类型:boolean
// ① 只有两个值:true 、 false
// ② 常常使用在条件判断、循环语句中
boolean isAdult = true;
if(isAdult){
System.out.println("你可以看成人电影了");
}else{
System.out.println("还是看看动画片吧~");
}
4. 基本数据类型变量间的运算规则
前提:只适用于非boolean类型的其它7种基本数据类型。
4.1 自动类型提升
容量小的变量与容量大的变量做运算,结果为容量大的变量所对应的数据类型。
byte 、short 、char --> int ---> long ---> float --> double
特殊的:byte、short 、char 三者之间两两做运算的话,结果是int类型。
class VariableTest3 {
public static void main(String[] args) {
int i1 = 10;
int i2 = 20;
int i3 = i1 + i2;
long i4 = i1 + i2;
//byte i5 = i1 + i2;//编译失败
byte b1 = 10;
int i6 = b1 + i1;
//short b2 = b1 + i1;//编译失败
float f1 = i4;
System.out.println(f1);//30.0
//############特别的###########
byte bb1 = 10;
short ss1 = 20;
//short ss2 = bb1 + ss1;
byte bb2 = 30;
//byte bb3 = bb1 + bb2;
short ss2 = 40;
//short ss3 = ss1 + ss2;
//#########关于char类型##############
char c1 = 'a';
System.out.println(c1 + 0);//97
int ii1 = 10;
int ii2 = c1 + ii1;
//编译不通过
//short ss3 = ss2 + c1;
int ii3 = ss2 + c1;
}
}
4.2 强制类型转换
可以看做是自动类型提升运算规则的逆运算。
将容量大的数据类型的变量转换为容量小的数据类型的变量:使用强转符:()
class VariableTest4{
public static void main(String[] args) {
int i1 = 10;
//编译不通过
//byte b1 = i1;
byte b1 = (byte)i1;
System.out.println(b1);
//出现了精度的损失
int i2 = 128;
byte b2 = (byte)i2;
System.out.println(b2);//-128
//出现了精度的损失
float f1 = 12.7F;
int i3 = (int)f1;
System.out.println(i3);
}
}
4.3 练习
//############练习##################
long l1 = 1234; //理解成int的自动类型提升
System.out.println(l1);
long l2 = 12342134234L;//直接使用8个字节的内存空间进行存储
//编译不通过
//float f1 = 12.3;//12.3 看成是double类型,不可以赋给容量小的类型
4.4 常量的理解
/*
整型的常量,默认为int类型
浮点类型的常量,默认为double类型
*/
int i = 10;
int j = i + 20; //20:常量
short s1 = 10;
//short s2 = s1 + 20;//编译不通过
short s3 = (short)(s1 + 20);
float f2 = 12.3F;
double d1 = f2 + 1.2;
5. String的使用
/*
字符串的使用
1. 理解字符串的含义
2. 字符串使用一对""表示
3. 字符串可以与8种基本数据类型的变量做运算;但是只能做连接运算: +
4. 运算结果仍是字符串类型
*/
class StringTest {
public static void main(String[] args) {
String s1 = "Hello";
String s2 = s1 + 123;
System.out.println(s1);
System.out.println(s2);
int i1 = 10;
boolean b1 = false;
String s3 = s1 + i1 + b1;
System.out.println(s3);//Hello10false
//编译不通过
//String s4 = i1 + b1 + s1;
}
}
- 练习
//练习1
System.out.println("hello" + "\t" + "world");
//* *
System.out.println("* *");
System.out.println("*" + "\t" + "*");//* *
System.out.println("*" + '\t' + '*');//* *
System.out.println('*' + "\t" + "*");//* *
System.out.println('*' + '\t' + "*");//51*
System.out.println('*' + '\t' + '*');//93
System.out.println("*" + "\t" + '*');//* *
//练习2
char c = 'a';
int i = 10;
String s = "hello";
System.out.println(s + i + c);//hello10a
System.out.println(s + (i + c));//hello107
System.out.println(i + s + c);//10helloa
System.out.println(i + c + s);//107hello