Java 程序结构
1、对写javav程序的基本要求:
package demo.day01; //必须是小写字母,多个单词使用.隔开
import java.util.Scanner;//Java API一定在当前库中存在
public class HelloWorld{//类名的每个单词首字母要大写
//类体中的成员要缩进一个tab
public static void main(String[] args){
//方法中的成员也要缩进一个tab
//java的语句以;为结尾,不是中文的符号
//括号要配对先写出成对的括号,然后再在中间填写代码
Scanner console = new Scanner(System.in);
}//方法体的结束也要和方法的声明位置对齐
}//类体 class body
//括号一定要配对,声明开始的位置和结束的位置要对齐
1、对写javav程序的基本要求:
package demo.day01; //必须是小写字母,多个单词使用.隔开
import java.util.Scanner;//Java API一定在当前库中存在
public class HelloWorld{//类名的每个单词首字母要大写
//类体中的成员要缩进一个tab
public static void main(String[] args){
//方法中的成员也要缩进一个tab
//java的语句以;为结尾,不是中文的符号
//括号要配对先写出成对的括号,然后再在中间填写代码
Scanner console = new Scanner(System.in);
}//方法体的结束也要和方法的声明位置对齐
}//类体 class body
//括号一定要配对,声明开始的位置和结束的位置要对齐
2、方法要写到类里面,语句要写到方法里面。类里面是不能写语句的。
3、编译错误:java编译器在编译源代码为class文件的过程中出现的错误,一般是语法错误。
当出现编译错误时,不会有class文件产生,也就不能运行。
编译是将.java编译为.class。
编译时,会将一切数据转换为二进制。
当出现编译错误时,不会有class文件产生,也就不能运行。
编译是将.java编译为.class。
编译时,会将一切数据转换为二进制。
在控制台执行java程序步骤:
(1) 设置CLASSPATH环境变量,指向package所在的目录,一般是项目文件夹中的bin目录
(2) 执行java packagename.ClassName
Linux环境
export CLASSPATH=bin文件夹的路径
java packagename.ClassName
Windows环境
set CLASSPATH=bin文件夹的路径
java packagename.ClassName
更为简单的方法,两种操作系统通用
java -cp bin文件夹的路径 packagename.ClassName
//解释:-cp指的是CLASSPATH,整句的意思就是在某个路径下去寻找并执行一个类。
变量
(1)java是强类型语言,类型之间不能相互赋值。否则会出现编译错误。
(2)java有8种数据类型
(3)变量在声明的地方开始,到块结束。(一对{}叫块)。
(4)可以单独定义一个块,再块里面定义的变量在块外是不能够使用的。
(5)变量不能在同一作用域中重复声明变量。
(6)java中变量原则:作用于越小越好
(1) 设置CLASSPATH环境变量,指向package所在的目录,一般是项目文件夹中的bin目录
(2) 执行java packagename.ClassName
Linux环境
export CLASSPATH=bin文件夹的路径
java packagename.ClassName
Windows环境
set CLASSPATH=bin文件夹的路径
java packagename.ClassName
更为简单的方法,两种操作系统通用
java -cp bin文件夹的路径 packagename.ClassName
//解释:-cp指的是CLASSPATH,整句的意思就是在某个路径下去寻找并执行一个类。
变量
(1)java是强类型语言,类型之间不能相互赋值。否则会出现编译错误。
(2)java有8种数据类型
(3)变量在声明的地方开始,到块结束。(一对{}叫块)。
(4)可以单独定义一个块,再块里面定义的变量在块外是不能够使用的。
(5)变量不能在同一作用域中重复声明变量。
(6)java中变量原则:作用于越小越好
直接量
即常量,如5、0x55等,其数据类型默认为int类型。因此写直接量时不能超过int范围
除非在直接量后面增加后缀L。
浮点数直接量默认数据类型为double,要给float赋值必须加后缀f。
即常量,如5、0x55等,其数据类型默认为int类型。因此写直接量时不能超过int范围
除非在直接量后面增加后缀L。
浮点数直接量默认数据类型为double,要给float赋值必须加后缀f。
8中基本数据类型(对应的就是引用数据类型,该数据类型之后再讲)
(1)整数:
byte 1字节 -128 ~ 127 存储1个字节的数据(为了和C兼容,不常用)
short 2字节 -32768 ~ 32767 兼容性考虑,一般不用(为了和C兼容,很不常用)
int 4字节 -21亿 ~ 21亿 存储整数(最常用)
long 8字节 -2^63 ~ 2^63-1 存储长整数(常用),java没有比long更大的数据类型了
(2)浮点数
float 4字节 符合IEEE 754标准 存储浮点数
double 8字节 符合IEEE 754标准 存储双精度浮点数(常用)
(3)字符型
char 2字节 0~65535 存储一个字符
(4)布尔型
boolean 1字节 true/false 存储逻辑变量
(1)整数:
byte 1字节 -128 ~ 127 存储1个字节的数据(为了和C兼容,不常用)
short 2字节 -32768 ~ 32767 兼容性考虑,一般不用(为了和C兼容,很不常用)
int 4字节 -21亿 ~ 21亿 存储整数(最常用)
long 8字节 -2^63 ~ 2^63-1 存储长整数(常用),java没有比long更大的数据类型了
(2)浮点数
float 4字节 符合IEEE 754标准 存储浮点数
double 8字节 符合IEEE 754标准 存储双精度浮点数(常用)
(3)字符型
char 2字节 0~65535 存储一个字符
(4)布尔型
boolean 1字节 true/false 存储逻辑变量
关于字符类型需要说明的问题:
(1)字符类型事实上是一个16位无符号整数,这个值是对应字符的编码。
(2)java字符类型采用Unicode字符集编码,所有的字符都是16位
(3)字符直接量可以采用例如'中'的形式,也可以采用16进制的表示形式,如'\u4e2d'(中 对应的Unicode编码)
(4)对于不方便输入的字符采用转椅字符表示:
'\n' 换行 '\t' tab '\\' \ '\'' ' '\"' " '\b' 退格 '\r' 回车
换行:换到下一行
回车:回到当前行的行首
(5)字符是整数,可以直接参与运算:int n = '6'-'0';
(6)控制字符没有显示效果,如退格、回车等。
(7)只有本地字符集中存在的字符才能显示。
(8)不是所有字符都能够显示,只能显示本地字符(中文20000多字)。
(6)注意与C语言中的char类型区分开来。
(1)字符类型事实上是一个16位无符号整数,这个值是对应字符的编码。
(2)java字符类型采用Unicode字符集编码,所有的字符都是16位
(3)字符直接量可以采用例如'中'的形式,也可以采用16进制的表示形式,如'\u4e2d'(中 对应的Unicode编码)
(4)对于不方便输入的字符采用转椅字符表示:
'\n' 换行 '\t' tab '\\' \ '\'' ' '\"' " '\b' 退格 '\r' 回车
换行:换到下一行
回车:回到当前行的行首
(5)字符是整数,可以直接参与运算:int n = '6'-'0';
(6)控制字符没有显示效果,如退格、回车等。
(7)只有本地字符集中存在的字符才能显示。
(8)不是所有字符都能够显示,只能显示本地字符(中文20000多字)。
(6)注意与C语言中的char类型区分开来。
类型使用原则:
(1)对于整数,
最常使用 int,但是要注意范围;
其次用long类型,基本不需要考虑溢出;
很少用short
byte用于表示最小数据单位,如文件中的数据。
(2)对于浮点数,
最常使用double类型,精度在小数点后16位;
其次使用float,精度在小数点后7位。
使用浮点数计算时,有舍入误差,得出的结果往往不怎么准确。
如计算2.6-2,会得出0.6000000000000001。这是java的特点,使用时要注意。
(1)对于整数,
最常使用 int,但是要注意范围;
其次用long类型,基本不需要考虑溢出;
很少用short
byte用于表示最小数据单位,如文件中的数据。
(2)对于浮点数,
最常使用double类型,精度在小数点后16位;
其次使用float,精度在小数点后7位。
使用浮点数计算时,有舍入误差,得出的结果往往不怎么准确。
如计算2.6-2,会得出0.6000000000000001。这是java的特点,使用时要注意。
关于类型转换
(1)自动类型转换(隐式类型转换):从小类到大类型可以自动完成:
byte -> short -> int -> long -> float -> double
char -> int
(2)强制类型转换:从大类型到小类型需要强制转换符,会造成精度损失或者溢出。
强制类型转换方法:在变量前面加上括号。如(int)'b';
(3)不要轻易执行类型转换,可能会发生意想不到的结果。
(1)自动类型转换(隐式类型转换):从小类到大类型可以自动完成:
byte -> short -> int -> long -> float -> double
char -> int
(2)强制类型转换:从大类型到小类型需要强制转换符,会造成精度损失或者溢出。
强制类型转换方法:在变量前面加上括号。如(int)'b';
(3)不要轻易执行类型转换,可能会发生意想不到的结果。
关于数学运算
(1)类型相同的参与运算,类型不同时自动转换,低转高
(1)类型相同的参与运算,类型不同时自动转换,低转高
本章使用的案例:
1、加速度的计算;
2、随机生成字符。
1、加速度的计算;
2、随机生成字符。
本章使用的类或方法:
1、对象:Scanner
import java.util.Scanner;
Scanner console = new Scanner(System.in);
int n = console.nextInt();//获取控制台的下一行输入的整数
String = console.nextLine();//获取控制台的下一行输入的字符串
double - console,next.Double();//获取控制台的下一行输入的浮点数
2、对象Random
import java.util.Random;
Random random = new Random();
int n = random.nextInt(26);//生成[0~26)之间的随机数
1、对象:Scanner
import java.util.Scanner;
Scanner console = new Scanner(System.in);
int n = console.nextInt();//获取控制台的下一行输入的整数
String = console.nextLine();//获取控制台的下一行输入的字符串
double - console,next.Double();//获取控制台的下一行输入的浮点数
2、对象Random
import java.util.Random;
Random random = new Random();
int n = random.nextInt(26);//生成[0~26)之间的随机数
3、类Math
Math.sqrt();使用时,不必import java.math.*,可以直接使用。返回值是double类型
4、类Integer
Integer.toHexString('国');//将该整数转换为16进制字符串,此处'国'会先被转
换为int类型,再被方法使用,最终整个方法返回double类型
Math.sqrt();使用时,不必import java.math.*,可以直接使用。返回值是double类型
4、类Integer
Integer.toHexString('国');//将该整数转换为16进制字符串,此处'国'会先被转
换为int类型,再被方法使用,最终整个方法返回double类型
其他知识点:
1、提示:Java中所有API方法中出现的范围都是只包含开始,不包含结束。
2、记住几个关键字符的ASCII码:
'A' = 65 '0' = 48 'a' = 97
3、使用boolean变量时,变量名一定要写成字面意思,这样读程序比较好写。如isUsed、isMan...
4、-128的二进制:10000000(128的二进制码取反再加一)
5、long now = System.currentTimeMillis();//获取从1970年1月1日到现在累计的ms数
获取的是软件运行期间的时间,不是编译期间的。
1、提示:Java中所有API方法中出现的范围都是只包含开始,不包含结束。
2、记住几个关键字符的ASCII码:
'A' = 65 '0' = 48 'a' = 97
3、使用boolean变量时,变量名一定要写成字面意思,这样读程序比较好写。如isUsed、isMan...
4、-128的二进制:10000000(128的二进制码取反再加一)
5、long now = System.currentTimeMillis();//获取从1970年1月1日到现在累计的ms数
获取的是软件运行期间的时间,不是编译期间的。