Day2
运行HelloWorld.java的知识点
1.java程序编写-编译-运行的过程:
编写:将编写的java代码保存在以".java"结尾的源文件中。
编译:使用javac.exe命令编译java源文件。格式:javac 源文件名。java
运行:使用java.exe命令解释运行字节码文件。格式:java 类名
2.一个java源文件中科院声明多个class,最多只能有一个类声明为public的。
(public只能加到与文件名相同的类中)
3.程序的入口是main()方法,格式是固定的:public static void main(String[] args)
4.输出语句:
System.out.println(); //先输出数据,然后换行
System.out.print(); //直接输出数据
5.编译以后,会生成一个或多个字节码文件,每个字节码文件对应一个类
关键字和保留字
关键字(keyword):别Java语言赋予特殊含义,用做专门有图的字符串
特点:关键字中所有字母都为小写
保留字(reserver word):现有Java版本尚未使用,以后版本可能会作为关键字使用
关键字类型
✔用于定义数据类型的关键字:class、interface、enum、byte、short、int、long、float、double、char、boolean、void
✔用于定义流程控制的关键字:if、else、switch、case、default、while、do、for、break、continue、return
✔用于定义访问权限修饰符的关键字:private、protected、public
✔用于定义类、函数、变量修饰符的关键字:abstract、final、static、synchronized
✔用于定义类与类之间关系的关键字:extends、implements
✔用于定义建立实例及引用实例、判断实例的关键字:new、this、super、instanceof
✔用于异常处理的关键字:try、catch、finally、throw、throws
✔用于包的关键字:package、import
✔其他修饰符关键字:native、strictfp、transient、volatile、assert
✔*用于定义数据类型值的字面值:true、false、null
标识符
标识符:Java对各种变量、方法和类等要素命名时使用的字符序列
(凡是自己起名字的地方都是标识符,比如类名、变量名、方法名、接口名、包名)
合法定义标识符规则:
①由26个英文字母大小写,0-9,_或$组成。
②不可以数字开头。
③不可以使用关键字和保留字,但可以包含关键字和保留字。
④Java中严格区分大小写,长度无限制。
⑤标识符不能包含空格。
(不遵守会导致编译不通过,所以必须严格要求)
一般命名规范:
✔包名:多单词组成时所有字母都小写:xxxyyyzzz
✔类名、接口名:多单词组成时所有单词首字母大写:XxxYyyZzz
✔变量名、方法名:多单词组成时首单词首字母小写,其余单词首字母大写:xxxYyyZzz
✔常量名:所有字母都大写,用_连接单词:XXX_YYY_ZZZ
变量
变量的概念:内存中的一个存储区域;同一类型范围内不断变化;程序中最基本的存储单元
变量的作用:用于在内存中保存数据
使用变量的注意点:
①Java中每个变量必须先声明,后使用
②使用变量名来访问该区域的数据
③变量的作用域:其定义的一对{}内
④变量只有在其作用域内才有效
⑤同一作用域呢,不能定义重名的变量
⑥java定义变量的格式:数据类型 变量名 = 变量值;
public class VariableTest {
public static void main(String[] args){
//变量的定义
int myAge = 12;
//变量的使用
System.out.println(myAge);
//变量的声明
int myNumber;
//变量的赋值
myNumber = 1001;
System.out.println(myNumber);
}
}
数据类型
基本数据类型(primitive type):
1.数值型(整数类型byte、short、int、long 浮点类型float、double)
2.字符型(char)
3.布尔型(boolean)
引用数据类型(reference type):
1.类(class)
2.接口(interface)
3.数组([])
整数类型(byte、short、int、long)
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)
//声明long型变量,必须以"l"或"L"结尾
浮点型(float、double)
float(单精度):4字节
double(双精度):8字节
//一般使用双精度double,声明float型常量,必须加"f"或"F"
字符型(char)
1字符=2字节
//定义char型变量,通常用一对’’,内部只能写一个字符
布尔型(boolean)
//只能取两个值之一:true、false
//常用于判断和循环结构
public class VariableTest1 {
public static void main(String[] args) {
//1.整型
byte b1 = 12;
byte b2 = -128;
System.out.println(b1);
System.out.println(b2);
short s1 = 128;
int i1 = 1234;
//声明long型变量,必须以"l"或"L"结尾
long l1 = 1231241323L;
System.out.println(l1);
//2.浮点型
double d1 = 123.3;
System.out.println(d1 + 1);
float f1 = 12.3f;
System.out.println(f1);
//一般使用双精度double,声明float型常量,必须加"f"或"F"
//3.字符型
//①定义char型变量,通常用一对'',内部只能写一个字符
char c1 = 'a';
System.out.println(c1);
//②转义字符
char c2 = '\n'; //换行符
c2 = '\t'; //制表符
System.out.println(c2);
//③直接使用Unicode值来表示字符型常量
char c3 = '\u0123';
System.out.println(c3);
//4.布尔型
// 常用于判断和循环结构
boolean bb1 = true;
System.out.println(bb1);
}
}
基本数据类型之间的运算规则:
(前提:只讨论7种基本数据类型间的运算,不包含boolean)
1.自动类型转换:
容量小的数据类型->容量大的数据类型,自动提升为容量大的数据类型。 byte、short、char -> int -> long -> float -> double
当byte、short、char三种类型的变量运算时,结果为int类 (可以理解防止内存溢出)
public class VariableTest2 {
public static void main(String[] args) {
byte b1 = 2;
int i1 = 139;
//编译不通过
//byte b2 = b1 + i1;
int i2 = b1 + i1; //141
long l1 = b1 + i1;
System.out.println(i2);
float f = b1 + i1; //141.0
System.out.println(f);
char c1 = 'a';
int i3 = 10;
int i4 = c1 + i3; //107
System.out.println(i4);
}
}
2.强制类型转换:自动类型提升的逆运算。
需要使用强转符:()
强制类型转换,可能导致精度损失。
public class VariableTest3 {
public static void main(String[] args) {
double d1 = 12.3;
int i1 = (int)d1;//截断操作
System.out.println(i1);
}
}
String类型变量的使用
1.String属于引用数据类型
2.声明String类型变量,使用一堆""
3.String可以与8种数据类型作运算,且运算只能是连接运算:+
4.运算的结果依然是String类型
public class StringTest {
public static void main(String[] args) {
String s1 = "Hello World!";
System.out.println(s1);
String s2 = "1";
String s3 = "";
int number = 1001;
String numberStr = "学号:";
String info = numberStr + number;//+:连接运算
System.out.println(info);
boolean b1 = true;
String info1 = info + b1;
System.out.println(info1);//+:连接运算
//练习1
char c = 'a';
int num = 10;
String str = "hello";
System.out.println(c + num + str); //107hello
System.out.println(c + str + num); //ahello10
System.out.println(c + (num + str));//a10hello
System.out.println((c + num) + str);//107hello
System.out.println(str + num + c); //hello10a
//练习2
System.out.println("* *");
System.out.println('*' + '\t' + '*');
System.out.println('*' + "\t" + '*');
System.out.println('*' + '\t' + "*");
System.out.println('*' + ('\t' + "*"));
}
}
计算机中不同进制的使用说明:
①二进制:0B或0b开头
②十进制:满10进1
③八进制:满8进1,以数字0开头表示
④十六进制:0-9和A-F,满16进1,以0x和0X开头表示
public class BinaryTest {
public static void main(String[] args) {
int num1 = 0b110;
int num2 = 110;
int num3 = 127;
int num4 = 0x110A;
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
System.out.println("num3 = " + num3);
System.out.println("num4 = " + num4);
}
}