JAVA基础讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无论后面表达式为什么,结果都为false, 所以此时后面表达式不被执行,被短路
|| 短路或 当||前面表达式为true时, 无论后面表达式为什么,结果都为true,
• int x=4; boolean y=x++>4 && ++x<9; System.out.println(x);
• int x=4; boolean y= ++x>x++-3 || x++>4; System.out.println(x);
JAVA编译器
字节码(.class文件)
没有在内存中 解释时放入内存中
Windows
UNIX
其他操作系统
源文件
必须指明所占内存的大小
字节码(.class)
数据类型
数据类型
基本数据类型
整型 浮点型 字符型 布尔型
复合数据类型
数组 类 接口 字符串
基本数据类型
• JAVA中的数据类型是按在内存中所站空间大 小区分的.
变量
• 变量:程序中最基本的存储单元 • 本质:内存中的一小块区域 • 变量的基本要素:名称,类型,作用域 1、名称:标识该变量的 2、类型:表示内存分配的大小 3、作用域:表示变量的有效区间-----一会讲
变量的使用步骤
• 变量使用时必须先声明 语法: 类型 变量名;
例:int x;
xy
值
值
float y; int m,n,z;同种类型的变量可以一起声明
•
System.out.println(zs.name);
•
System.out.println (zs.neirong);
•
}
•}
class Main{//主类 public static void main(String args[]){ ZhiShi zs1=new ZhiShi(); zs1.name="JAVA"; zs1.neirong="桌面级开发!!!!"; LaoShi ls1=new LaoShi(); ls1.zs=zs1; XueSheng xs1=new XueSheng(); xs1.ting(ls1.jiangke()); }
class A{ public static void main(String args[]){ B b=new B(); b.bb(); b.aa(); }
} class B{
int x=2; void bb(){
int y=x+++3; } void aa(){
x=++x+5; System.out.println(x); } }
二、强制数据类型Baidu Nhomakorabea换(显示转换)
把容量较大的数据类型转换成容量较小的数据类型 语法:(类型)数值 如:(int)4.5 1、如果数值过大超出范围,强制转换后会产生益出 2、double强制转换成float时,如果过大产生无限益出
(int)false (float)”asdfasdf”
下面标识符哪些是合法的
}
课后练习
int x=3; int y=20; int m=5; int z=y%8/3*++x; boolean b=x>3 || y--<=19 && ++m>6; System.out.println(z); System.out.println(m); System.out.println(y); System.out.println (b);
public int jia(){ return 3; } 当方法有返回值类型时,必须写return
当方法没有返回值类型时,一定不能写return
遇到return 方法将终止运行,后面的语句不会被执 行到。在JAVA中return后不可以出现任何语句
方法的使用
• 方法被创建后,仅仅是段代码,电脑是不 会执行方法,只有程序员调用方法时,方 法内部的语句才会被执行到.
方法的调用:方法名(实际参数列表)
方法调用的两种情况
• 在类中使用其他类的方法,必须先创建其他 类的对象,在通过对象去使用方法.
class A{ void a(int x){}
} class B{
void b(){ A d=new A(); d.a(1);
} }
• 在类中使用自己类的方法,直接使用就可 以
内存的角度看软件
电脑(硬盘)
电脑(内存)
垃圾
QQ 电影 魔兽
执行 QQ
任何软件只有放入内存中才能发挥作用
软件的快慢和内存的大小有直接关系
如同在火车站买票
课堂独特理论一:得内存者得天下
关于内存的深入知识,在后面的课程中会深入讲解。
10000
100
JAVA程序的运行过程:
编写JAVA程序
JAVA源代码(源文件)类
• 算术运算符 + - * / %
2、/ 当两个数是整数时,将舍弃小数部分,直接取整。 当两个操作数中有一个为小数时,结果为小数
int z=8/3; double x=8/3.0; double y=6.0/3.3; System.out.println(z); System.out.println(x); System.out.println(y);
int m=y;
}
}
• 成员变量(全局变量):在类中但是不是在某个方 法内声明的变量。可以在整个类中使用
• 局部变量:在方法中声明的变量。 只在方法内使,出去不能用。
• 方法参数:在方法参数的括号中声明。 作为参数的整个方法
变量的隐藏
• 成员变量与类的局部变量同名,此时在方法内部 局部变量隐藏了成员变量
• int x=4; boolean
y=4>x++-3+x++*8%2 && x-->2+x-- && false System.out.println(y);
public static void main(String args[]){ int x; int y=x+2; System.out.println(y);
• 内存中每个0,1,占1位 10010100
一块内存空间里面存了 很多0和1,每个占一位
• 日常生活中我们使用的单位是:GB MB KB B • 1GB=1024MB 1MB=1024KB 1KB=1024B • 最终1B=8位
四类八种基本数据类型
• 整数 ----四种 • 实数 ----两种 • char 字符型 • boolean 布尔型
《运算符列表.docx.doc》
• 赋值运算符:= A=3+2-1;把右边表达式的结果赋给左边的变量 符合赋值运算符:以前有优化效率高 x+=2 相当于x=x+2 X*=8 相当于x=x*8 复合赋值运算符会自动强制转换类型 普通赋值运算符不会
int x=3; x=x-32.0;-------错误 x-=32.0;--------正确
• ++ -自加1和自减1运算符 x++是先运算在加1 ++x是先加1在运算.
• 例:
int x=3; int y=x+++4; int z=++x+5; System.out.println(y); System.out.println(z);
• 例:
int x=3; int y=(x++)+x; int z=++x+5+x++; int m= (x--)+(++y)+z+(++y)-(--x); System.out.println(y); System.out.println(z);
false false true true false false
• 练习: true && false 4<5 && 3>2 true && 44<22 4>2 || 5<3 4<2 && true || 33<3 && false 4+5>2 && 8<9 || 3+6>3
• && || 短路运算符 && 短路与 当&&前面表达式为false时,
Class A{ void a(){} void b(){ a(); }
}
• 方法的调用结果就是方法中的语句的执行 结果.
int aa(){ return 3;
}
Void bb(){ System.out.println(“***”);
}
aa()相当于3
bb()相当于直接输出***
练习:方法的调用,实现老师讲课
1、Hellow world 2、AAA-BBB 3、1AbC 4、c$c 5、_a
字面量
• 字面量:某些类型的基本表述(四类八种和字符串) • 字面量==常量 ???
– 例:
整型:2 3 100 2000 浮点型:3.4 1.223 3.445 字符型:’a’ ‘b’ ‘x’ ‘你’ 布尔型:true false 字符串型:”adsfadsfasdfasdf” “helloword”
}
标识符与关键字
标识符:程序员对程序中各种元素加以命名时使用的记 号.(凡是自己起名字的地方). 规则: 1 必须以字母,下划线(_),美元符($)开头,后面跟字母,下 划线,美元符或数字. 2 区分大小写 3 不可以跟关键字或保留字相同. 4支持中文变量名,但不建议使用.
原则:见名知意.
如:helloWord---初学者程序 abcdef------不明白
• % 取模 (余数)
int x=4%2; int y=8%12; int z=6%4; 公式:a%b=a-((int)(a/b)*b) 最终结果的符号为:%左边数的符号 5%2=1 -5%2=-1 5%-2=1 -5%-2=-1
• 逻辑运算符: 与 && 或 || 非 !
逻辑运算符连接两个布尔型的值或表达式,结果为布尔型的值
程序执行的内存图
程序
代码
内存 操作系统
执行 执行时的内存情况 heap(堆)
硬盘
stack(栈)
静态变量,字符串 常量
代码
data segment code segment
运算符与表达式
• 运算:对数据进行操作. • 运算符:表示不同运算的符号. • 操作数:参与运算的数据. • 表达式:运算符,和操作数组成的式子. • 优先级:运算符的运算次序 • 结合性:优先级相同的运算符,的运算次序
例: class A{
int x=3; void b(){
int x=4; x=9; System.out.println(x); } void c(){ System.out.println(x); } }
• 最终变量 用final修饰的变量 在程序运行的过程中其值不可变。 final int X=66;
&& 两个操作数同时为真才为真,否则为假 || 两个操作数,同时为假才为假,否则为真 !真的非为假,假的非为真
x
y
!x
!y x && y x || y
true true false false true true
true false false true false true
false true true false false true
• 变量在使用前必须得先初始化 初始化:第一次往变量里放值的过程。
int x;
x=66;
• 生明和初始化可以同时进行:int x=66;
• 变量的使用:往变量里放值 从变量里获得值
变量的分类
class A{
类里
int x=44;
void a(){ 方法里
int x=66;
}
方法的参数
void b(int y){
基础数据类型之间的转换
一、自动类型转换(隐式转换): • boolean 不可以转换成其他类型 • 实数默认为double 整数默认为int • 在混合运算时容量小的自动转换成容量大的.如float
f=3+4.0f; byte,char,short<int<long<float<double byte,char,short三者之间并列不相互转换,在运算时首先转换 成int • 多种数据类型运算时,先把所有数据转换成最大的
方法设计 程序
学生对象 名字 听课()
老师对象 名字 教() 说()
知识对象 知识名称
• 用程序去描述老师讲课如上图: 老师,学生,知识,在程序里都是对象.
老师用教的方法,把知识对象里的,知识名称属性,用自己 说的方法传达出去,学生用自己听课的方法,接受到知识 对象的知识名称.
• 方法的返回值 return :关键字,用来返回return 后面的值
• class LaoShi{//老师类
•
ZhiShi zs;
•
ZhiShi jiangke(){
•
return zs;
•
}
•}
• class ZhiShi{//知识类
•
String name;
•
String neirong;
•}
• class XueSheng{//学生类
•
void ting(ZhiShi zs){
|| 短路或 当||前面表达式为true时, 无论后面表达式为什么,结果都为true,
• int x=4; boolean y=x++>4 && ++x<9; System.out.println(x);
• int x=4; boolean y= ++x>x++-3 || x++>4; System.out.println(x);
JAVA编译器
字节码(.class文件)
没有在内存中 解释时放入内存中
Windows
UNIX
其他操作系统
源文件
必须指明所占内存的大小
字节码(.class)
数据类型
数据类型
基本数据类型
整型 浮点型 字符型 布尔型
复合数据类型
数组 类 接口 字符串
基本数据类型
• JAVA中的数据类型是按在内存中所站空间大 小区分的.
变量
• 变量:程序中最基本的存储单元 • 本质:内存中的一小块区域 • 变量的基本要素:名称,类型,作用域 1、名称:标识该变量的 2、类型:表示内存分配的大小 3、作用域:表示变量的有效区间-----一会讲
变量的使用步骤
• 变量使用时必须先声明 语法: 类型 变量名;
例:int x;
xy
值
值
float y; int m,n,z;同种类型的变量可以一起声明
•
System.out.println(zs.name);
•
System.out.println (zs.neirong);
•
}
•}
class Main{//主类 public static void main(String args[]){ ZhiShi zs1=new ZhiShi(); zs1.name="JAVA"; zs1.neirong="桌面级开发!!!!"; LaoShi ls1=new LaoShi(); ls1.zs=zs1; XueSheng xs1=new XueSheng(); xs1.ting(ls1.jiangke()); }
class A{ public static void main(String args[]){ B b=new B(); b.bb(); b.aa(); }
} class B{
int x=2; void bb(){
int y=x+++3; } void aa(){
x=++x+5; System.out.println(x); } }
二、强制数据类型Baidu Nhomakorabea换(显示转换)
把容量较大的数据类型转换成容量较小的数据类型 语法:(类型)数值 如:(int)4.5 1、如果数值过大超出范围,强制转换后会产生益出 2、double强制转换成float时,如果过大产生无限益出
(int)false (float)”asdfasdf”
下面标识符哪些是合法的
}
课后练习
int x=3; int y=20; int m=5; int z=y%8/3*++x; boolean b=x>3 || y--<=19 && ++m>6; System.out.println(z); System.out.println(m); System.out.println(y); System.out.println (b);
public int jia(){ return 3; } 当方法有返回值类型时,必须写return
当方法没有返回值类型时,一定不能写return
遇到return 方法将终止运行,后面的语句不会被执 行到。在JAVA中return后不可以出现任何语句
方法的使用
• 方法被创建后,仅仅是段代码,电脑是不 会执行方法,只有程序员调用方法时,方 法内部的语句才会被执行到.
方法的调用:方法名(实际参数列表)
方法调用的两种情况
• 在类中使用其他类的方法,必须先创建其他 类的对象,在通过对象去使用方法.
class A{ void a(int x){}
} class B{
void b(){ A d=new A(); d.a(1);
} }
• 在类中使用自己类的方法,直接使用就可 以
内存的角度看软件
电脑(硬盘)
电脑(内存)
垃圾
QQ 电影 魔兽
执行 QQ
任何软件只有放入内存中才能发挥作用
软件的快慢和内存的大小有直接关系
如同在火车站买票
课堂独特理论一:得内存者得天下
关于内存的深入知识,在后面的课程中会深入讲解。
10000
100
JAVA程序的运行过程:
编写JAVA程序
JAVA源代码(源文件)类
• 算术运算符 + - * / %
2、/ 当两个数是整数时,将舍弃小数部分,直接取整。 当两个操作数中有一个为小数时,结果为小数
int z=8/3; double x=8/3.0; double y=6.0/3.3; System.out.println(z); System.out.println(x); System.out.println(y);
int m=y;
}
}
• 成员变量(全局变量):在类中但是不是在某个方 法内声明的变量。可以在整个类中使用
• 局部变量:在方法中声明的变量。 只在方法内使,出去不能用。
• 方法参数:在方法参数的括号中声明。 作为参数的整个方法
变量的隐藏
• 成员变量与类的局部变量同名,此时在方法内部 局部变量隐藏了成员变量
• int x=4; boolean
y=4>x++-3+x++*8%2 && x-->2+x-- && false System.out.println(y);
public static void main(String args[]){ int x; int y=x+2; System.out.println(y);
• 内存中每个0,1,占1位 10010100
一块内存空间里面存了 很多0和1,每个占一位
• 日常生活中我们使用的单位是:GB MB KB B • 1GB=1024MB 1MB=1024KB 1KB=1024B • 最终1B=8位
四类八种基本数据类型
• 整数 ----四种 • 实数 ----两种 • char 字符型 • boolean 布尔型
《运算符列表.docx.doc》
• 赋值运算符:= A=3+2-1;把右边表达式的结果赋给左边的变量 符合赋值运算符:以前有优化效率高 x+=2 相当于x=x+2 X*=8 相当于x=x*8 复合赋值运算符会自动强制转换类型 普通赋值运算符不会
int x=3; x=x-32.0;-------错误 x-=32.0;--------正确
• ++ -自加1和自减1运算符 x++是先运算在加1 ++x是先加1在运算.
• 例:
int x=3; int y=x+++4; int z=++x+5; System.out.println(y); System.out.println(z);
• 例:
int x=3; int y=(x++)+x; int z=++x+5+x++; int m= (x--)+(++y)+z+(++y)-(--x); System.out.println(y); System.out.println(z);
false false true true false false
• 练习: true && false 4<5 && 3>2 true && 44<22 4>2 || 5<3 4<2 && true || 33<3 && false 4+5>2 && 8<9 || 3+6>3
• && || 短路运算符 && 短路与 当&&前面表达式为false时,
Class A{ void a(){} void b(){ a(); }
}
• 方法的调用结果就是方法中的语句的执行 结果.
int aa(){ return 3;
}
Void bb(){ System.out.println(“***”);
}
aa()相当于3
bb()相当于直接输出***
练习:方法的调用,实现老师讲课
1、Hellow world 2、AAA-BBB 3、1AbC 4、c$c 5、_a
字面量
• 字面量:某些类型的基本表述(四类八种和字符串) • 字面量==常量 ???
– 例:
整型:2 3 100 2000 浮点型:3.4 1.223 3.445 字符型:’a’ ‘b’ ‘x’ ‘你’ 布尔型:true false 字符串型:”adsfadsfasdfasdf” “helloword”
}
标识符与关键字
标识符:程序员对程序中各种元素加以命名时使用的记 号.(凡是自己起名字的地方). 规则: 1 必须以字母,下划线(_),美元符($)开头,后面跟字母,下 划线,美元符或数字. 2 区分大小写 3 不可以跟关键字或保留字相同. 4支持中文变量名,但不建议使用.
原则:见名知意.
如:helloWord---初学者程序 abcdef------不明白
• % 取模 (余数)
int x=4%2; int y=8%12; int z=6%4; 公式:a%b=a-((int)(a/b)*b) 最终结果的符号为:%左边数的符号 5%2=1 -5%2=-1 5%-2=1 -5%-2=-1
• 逻辑运算符: 与 && 或 || 非 !
逻辑运算符连接两个布尔型的值或表达式,结果为布尔型的值
程序执行的内存图
程序
代码
内存 操作系统
执行 执行时的内存情况 heap(堆)
硬盘
stack(栈)
静态变量,字符串 常量
代码
data segment code segment
运算符与表达式
• 运算:对数据进行操作. • 运算符:表示不同运算的符号. • 操作数:参与运算的数据. • 表达式:运算符,和操作数组成的式子. • 优先级:运算符的运算次序 • 结合性:优先级相同的运算符,的运算次序
例: class A{
int x=3; void b(){
int x=4; x=9; System.out.println(x); } void c(){ System.out.println(x); } }
• 最终变量 用final修饰的变量 在程序运行的过程中其值不可变。 final int X=66;
&& 两个操作数同时为真才为真,否则为假 || 两个操作数,同时为假才为假,否则为真 !真的非为假,假的非为真
x
y
!x
!y x && y x || y
true true false false true true
true false false true false true
false true true false false true
• 变量在使用前必须得先初始化 初始化:第一次往变量里放值的过程。
int x;
x=66;
• 生明和初始化可以同时进行:int x=66;
• 变量的使用:往变量里放值 从变量里获得值
变量的分类
class A{
类里
int x=44;
void a(){ 方法里
int x=66;
}
方法的参数
void b(int y){
基础数据类型之间的转换
一、自动类型转换(隐式转换): • boolean 不可以转换成其他类型 • 实数默认为double 整数默认为int • 在混合运算时容量小的自动转换成容量大的.如float
f=3+4.0f; byte,char,short<int<long<float<double byte,char,short三者之间并列不相互转换,在运算时首先转换 成int • 多种数据类型运算时,先把所有数据转换成最大的
方法设计 程序
学生对象 名字 听课()
老师对象 名字 教() 说()
知识对象 知识名称
• 用程序去描述老师讲课如上图: 老师,学生,知识,在程序里都是对象.
老师用教的方法,把知识对象里的,知识名称属性,用自己 说的方法传达出去,学生用自己听课的方法,接受到知识 对象的知识名称.
• 方法的返回值 return :关键字,用来返回return 后面的值
• class LaoShi{//老师类
•
ZhiShi zs;
•
ZhiShi jiangke(){
•
return zs;
•
}
•}
• class ZhiShi{//知识类
•
String name;
•
String neirong;
•}
• class XueSheng{//学生类
•
void ting(ZhiShi zs){