张孝祥java基础开发第二章总结:
1、java程序代码必须放在一个类中
2、定义一个类:class+类名+{} 在{}中间放我们要编写的代码
//FileName Lession2.java class Lession2{ public static void main(String[] args){ } }
3.java中是区分大小写的。例如:修改Lession2.java的main为Main
//FileName Lession2.java class Lession2{ public static void Main(String[] args){ } }
dos控制台编译文件:
C:\javawork\lession2>javac Lession2.java
dos控制台运行文件:
C:\javawork\lession2>java Lession2
出错信息:
Exception in thread "main" java.lang.NoSuchMethodError: main
解决方法:把Main 修改成main
4.java是聚合式语言,java中一行可以分行写
//FileName Lession2.java class Lession2{ public static void main(String[] args){ } }
5.java代码分为2大类:一、结构语句(Lession2的定义)二、执行具体功能语句(System的输出)。java中的功能执行语句必须是用';'结束的,它也可以分行写
//FileName Lession2.java class Lession2{ public static void main(String[] args){ System.out.println ("hello world"); } } 6.java 可以在单词之间用tab、空格、\n、+等分割,但是不可以分割单词如: //FileName Lession2.java class Lession2{ public static void ma in(String[] args){ System.out.println("hello world"); } }
7.java中的注释
一、// 单行注释
二、/* */ 多行注释
三、/** */ javadoc注释
//FileName Lession2.java class Lession2{ // /* */ /** */ /*public static void main(String[] args){ /*System.out.println("hello world");*/ } */ }
/**/之间可以嵌套//但是不可以嵌套/**/和/** */
8.java中的标识符
java中的包、类、方法、参数和变量的名字,可由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是关键字。
9.java中的关键字
10.java中的常量
一、整型常量 十进制(12),十六进制(0x12), 八进制(012)
二、长整型常量 13L
三、单精度浮点数 5.1f,4f,2e3f,0f 有f在内存中占4个字节
四、 双精度浮点数 5.1,4,2e3,0d
五、布尔常量 true和false
六、字符常量 'a','8','\u0027'
‘\r‘表示接受键盘输入,相当于按下了回车键;
‘\n‘是换行;
‘\t‘是制表符,相当于table键;
‘\b‘是退格键,相当于Back Space;
‘\‘‘是单引号,而‘\“‘是双引号;
‘\\‘是一个斜杠“\”。
七、字符串常量 "Hello World","123","Welcome \nXXX"
八、null常量 null常量只有一个值,用null表示,表示对象的引用为空
11.变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。根据所存储的数据类型的不同,有各种不同类型的变量。变量名代表这块内存的数据。
int x=0,y;
y=x+3;
执行这两条语句的过程中,内存分配及变化情况,x在被取值前必须被初始化。
//FileName Lession2.java class Lession2{ public static void main(String[] args){ int x,y; y = x + 3; System.out.println("hello world"); } }
dos控制台输出:
C:\javawork\lession2>javac Lession2.java Lession2.java:5: 可能尚未初始化变量 x y = x + 3; ^ 1 错误
解决方法:在定义的时候给x附值
//FileName Lession2.java class Lession2{ public static void main(String[] args){ int x=0,y; y = x + 3; System.out.println("hello world"); } }
12.java的变量类型
13.变量字节大小及有效取值范围
byte占用一个字节,数字大小为-27—27-1
short占用两个字节,数字大小为-215—215-1
int占用四个字节,数字大小为-231—231-1
long占用八个字节,数字大小为-263—263-1
float占用四个字节,数字大小为1.4E-45~3.4E+38 , -1.4E-45~-3.4E+38 。用二进制的指数形式表示一个浮点数的格式,如:101*22 , 101*2-3
double占用八个字节,数字大小为4.9E-324~1.7E+308, -4.9E-324~-1.7E+308 。
char占两个字节,数字大小为0—216-1,是unicode编码。字符的本来面目,我们为什么可以直接将一个数字赋给字符变量。
Boolean占一个字节,其取值只有两个,true和false。
//FileName Lession2.java class Lession2{ public static void main(String[] args){ /*int x=0,y; y = x + 3; System.out.println("hello world");*/ char ch = 97; System.out.println(ch); } }
println可以打印字符、整数、小数、字符串
//FileName Lession2.java class Lession2{ public static void main(String[] args){ /*int x=0,y; y = x + 3; System.out.println("hello world");*/ char ch = 'x'; System.out.println(ch); byte b = 129; } }
dos控制台输出信息:
C:\javawork\lession2>javac Lession2.java Lession2.java:9: 可能损失精度 找到: int 需要: byte byte b = 129; ^ 1 错误
原因:b是byte类型在内存中占1个字节,129是int类型的在内存中占4个字节
//FileName Lession2.java class Lession2{ public static void main(String[] args){ /*int x=0,y; y = x + 3; System.out.println("hello world");*/ char ch = 'x'; System.out.println(ch); //byte b = 129; float f = 3.5; } }
dos控制台输出信息:
C:\javawork\lession2>javac Lession2.java Lession2.java:10: 可能损失精度 找到: double 需要: float float f = 3.5; ^ 1 错误
原因:f是float类型在内存中占4个字节,3.5是double类型的在内存中占8个字节
//FileName Lession2.java class Lession2{ public static void main(String[] args){ /*int x=0,y; y = x + 3; System.out.println("hello world");*/ char ch = 'x'; System.out.println(ch); //byte b = 129; float f = 3.5f; } } //FileName Lession2.java class Lession2{ public static void main(String[] args){ /*int x=0,y; y = x + 3; System.out.println("hello world");*/ char ch = 'x'; System.out.println(ch); byte b = 129; int i = b; float f = 3.5f; } }
将int类型变量i附给byte类型变量b ,需要强制类型转换
//FileName Lession2.java class Lession2{ public static void main(String[] args){ /*int x=0,y; y = x + 3; System.out.println("hello world");*/ char ch = 'x'; System.out.println(ch); byte b = 129; int i = b; b = i; float f = 3.5f; } }
C:\javawork\lession2>javac Lession2.java Lession2.java:11: 可能损失精度 找到: int 需要: byte b = i; ^ 1 错误
解决方法:
//FileName Lession2.java class Lession2{ public static void main(String[] args){ /*int x=0,y; y = x + 3; System.out.println("hello world");*/ char ch = 'x'; System.out.println(ch); byte b = 122; int i = b; b = (byte)i; System.out.println(b); float f = 3.5f; } }
14.java类型转化
//FileName Lession2.java class Lession2{ public static void main(String[] args){ /*int x=0,y; y = x + 3; System.out.println("hello world");*/ /*char ch = 'x'; System.out.println(ch); byte b = 122; int i = b; b = (byte)i; System.out.println(b); float f = 3.5f;*/ byte b = 3; b = b - 1; } }
dos控制台错误信息:
C:\javawork\lession2>javac Lession2.java Lession2.java:15: 可能损失精度 找到: int 需要: byte b = b - 1; ^ 1 错误
自动类型转换(也叫隐式类型转换)
强制类型转换(也叫显式类型转换)
类型转换的原理
及什么时候要用
强制类型转换
表达式的数据类型自动提升
所有的byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型;
如果一个操作数是float型,计算结果就是float型;
如果一个操作数是double型,计算结果就是double型。
分析 System.out.println(‘a’+1)与 System.out.println(“”+’a’+1) 的区别。
System.out.println(‘a’+1) 输出98 因为:'a' 会提升为int类型
System.out.println(“”+’a’+1) 输出a1 因为:前面是"" 这样会生成一个新的字符串输出
15.java中变量的生命周期和作用域
//FileName Lession2.java class Lession2{ public static void main(String[] args){ { int x = 3; System.out.println(x); } //System.out.println(x); System.out.println("" + 'a' + 1); } }
//FileName Lession2.java class Lession2{ public static void main(String[] args){ { int x = 3; System.out.println(x); } System.out.println(x); System.out.println("" + 'a' + 1); } }
dos控制台输出信息:
C:\javawork\lession2>javac Lession2.java Lession2.java:22: 找不到符号 符号: 变量 x 位置: 类 Lession2 System.out.println(x); ^ 1 错误
解决方法:
//FileName Lession2.java class Lession2{ public static void main(String[] args){ int x = 9;//java中不允许这种嵌套定义 { int x = 3;//java中不允许这种嵌套定义 System.out.println(x); } System.out.println(x); System.out.println("" + 'a' + 1); } }
//FileName Lession2.java class Lession2{ public static void main(String[] args){ int x = 9; { System.out.println(x); x = 3; System.out.println(x); } System.out.println(x); System.out.println("" + 'a' + 1); } }
16.java中的函数
返回值类型 函数名 (参数类型 形式参数1,参数类型 形式参数2,...)
{
程序代码
return 返回值;
}
其中:
形式参数:在方法被调用时用于接收外部传入的数据的变量。
参数类型:就是该形式参数的数据类型。
返回值:方法在执行完毕后返还给调用它的程序的数据。
返回值类型:函数要返回的结果的数据类型。
实参:调用函数时实际传给函数形式参数的数据。
编写打印三个矩形的程序,流水帐的代码
//FileName Lession2.java class Lession2{ public static void main(String[] args){ for (int i = 0;i <3;i++){ for (int j = 0;j <5;j++){ System.out.print("*"); } System.out.println(); } for (int i = 0;i <2;i++){ for (int j = 0;j <4;j++){ System.out.print("*"); } System.out.println(); } for (int i = 0;i <6;i++){ for (int j = 0;j <10;j++){ System.out.print("*"); } System.out.println(); } } }
编写打印三个矩形的程序,函数的代码
//FileName Lession2.java class Lession2{ public static void main(String[] args){ drawRectangle(3,5); drawRectangle(2,4); drawRectangle(6,10); } static void drawRectangle(int x,int y){ if (x <= 0 || y<=0) return; for (int i = 0;i < x;i++){ for (int j = 0;j < y;j++){ System.out.print("*"); } System.out.println(); } } }
如何理解函数返回值类型为void的情况
void不知道或不需要返回值类型的方法
//FileName Lession2.java class Lession2{ public static void main(String[] args){ drawRectangle(3,5); drawRectangle(2,4); drawRectangle(6,10); int area = getArea(3,5); System.out.println("3 * 5的面积=" + area); System.out.println("2 * 4的面积=" + getArea(2,4)); getArea(6,10); } static int getArea(int x,int y){ /*int sum = x * y; return sum;*/ return x * y; } static void drawRectangle(int x,int y){ if (x<=0 || y<=0) return; for (int i = 0;i < x;i++){ for (int j = 0;j < y;j++){ System.out.print("*"); } System.out.println(); } } }