java语言的特点
简单性
面向对象
分布式
跨平台
开源…..
java主要版本
J2SE——-JAVASE
开发桌面应用程序 QQ扫雷五子棋
J2EE——-JAVAEE
java平台企业版 用于编写 B(浏览器)/S(服务器)用户网站 电子商务系统 浏览器上能看见的
J2ME——JAVAME
java平台微型版被安卓系统被淘汰
java数据类型
基础数据类型
整型 byte/short /int/long
浮点型 float/double
字符型 char
布尔型 boolean
强制类型转换(大范围向小范围)
s1 short 类型
b1 bety类型
b1=(byte)s1;将short类型转换成bety类型
例题:byte b23=10;
int i13=10;
b23=i13;//java语言是一门安全性比较高的语言所以会报错
进制转换
二进制和十进制转换
单个字节代表的整数范围(重点)
在计算中单个字节表示8位二进制、描述的整数范围
对于非负数来说,描述范围0000 0000~0111 1111(0~127)
对于负数来说描述的范围:1000 0000~1111 1111
1000 0000= 按位取反 0111 1111 再加一 1000 0000 转换成十进制整数128 再加负号 -128
1111 1111= 按位取反 0000 0000 再加一 0000 0001 转换成十进制整数1 再加负号 -1
综上:
对于单个字节所能描述的十进制整数范围:-128~127
Scanner类实现JAVA键盘录入
Scanner sc = new Scanner( System.in);//创建Scanner 对象
String str=sc.next();//读取输入内容不包含有效期空格
String str=sc.nextLine();//读取输入内容``包含有效期空格
System.out.println("输入内容"+sc);
运算符
算术运算符
+(加) -(减) *(乘) /(除) %(取余)
异常 / by zero 除0
除 0.0 输出 Infinity (无穷大)
0/0.0 输出 NAN(no a number)System.out.println("2"+3+4);//234
System.out.println(4+3+"2");//72
字符串连接运算符
自增减运算符
++表示自增
—表示自减
前++(—)和后++(—)
++ia:当++在前面的时候先进行加一的操作,然后进行其他运算
ia++:当++在后面的时候先进行其他运算,然后进行加一的操作
笔试题:ia=6
<br />
System.out.println(ia);//6
System.out.println(ia++ + ++ia);//6+8
System.out.println(ia);//8
赋值关系运算符
笔试题:<br /> byte b1=5;
//b1+=3;
//3默认Int类型 b1bety类型 相加的结果是int类型
//相当于发生从Int类型想byTe类型转换 从大到小 强制类型转换b1=(byte)(b1+3);
//b1=bi+3需要强制转换//b1=(byte)b1+3;error
b1=(byte)(b1+3);、、可能损失精度
条件/三目运算符
条件表达式?表达式1:表达式2
若成立执行表达式1
若不成立执行表达式2
分支结构(重点)
if结构
if(条件表达式){
语句块1;
}
语句块2;
条件成立语句块1 不成立语句块2
if-else
if(条件表达式){
语句块1;
}
else{语句块2;
}
语句块3;
条件成立语句块1 不成立语句块2再不成立语句块3
if ifelse else
if(条件表达式){
语句块1;
}
if else{语句块2;
}
else{语句块3;
}
条件成立语句块1 不成立语句块2再不成立语句块3
switch-case
switch(表达式){
case字面值1:语句块1;break;
case字面值2:语句块2;break;
default:语句块3
}语句4
循环
for
}
随机数
import java.unit.Random
Random r=new Random();
while
while(条件表达式){
语句块;
i++;
}
do-while
do(
语句块;
)while(条件表达式)
数组
一维
int[] arr=new[5];
数组初始化
int [] arr={10,20,30};
二维
int[] arr=new[5][5];
面向对象
面向过程:强调过程
面向对象:强调对象,然后由对象去调用功能
面向对象开发:就是不断的创建对象,使用对象,指挥对象做事情
面向对象设计:就是在管理和维护对象之间的关系
面向对象的特征:封装 继承 多态 【抽象】
JAVA最基本的单位是类
现实世界事务和类的对应关系
事务: 类:
属性 成员变量
行为 成员方法
类是一组相关的属性和行为的集合
对象是该类事物的具体表现现实,具体存在的个体
局部变量:方法体内的变量
成员变量:类体内的变量
java jvm内存:堆区,栈区,方法区
堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class信息
2.jvm只有一个堆区被所有线程共享,堆中部存放基本数据类型和对象引用,之存放对象本身。
栈区:1.栈中之保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
2.每个栈区中的数据(原始类型和对象引用)都是私有,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区
方法区:1.方法区又叫做静态区,和堆一样,被线程共享,方法去包含所有的class和static变量
2.方法去包含的都是在整个过程中永远唯一的元素,如:class,static变量
构造方法
构造方法就是与类同名的方法,没有返回值类型
当创建一个新的对象的时候,会自动调用构造方法来进行对象中成员变量的初始化工作
默认构造
当自定义类中没有声明任何形式的构造方法时,则编译器会自动添加一个无参构造,空的构造方法,叫做默认、缺省构造方法比如Person()
但是类中只要定义了构造方法则编译器不再提供任何的构造方法
重载(重点)
在同一个类中,方法名相同参数列表不同的方法之间构成重载关系(OverLoad)。
方法重载的主要表现形式
方法重载的主要体现在:参数的个数不同,参数的类型不同,参数的顺序不同
方法名称相同
形参变量名与返回值类型无关,但是建议返回值类型最好相同
作用:调用者只需要记住一个方法名就可以调用各种不同的版本从而可以说实现多种数据处理的案例
this关键字(难点)
对于构造方法来说,this关键字就代表当前正在构造的对象
对于成员方法来说,this关键字就代表当前正在调用的对象
原理:由于不同的对象调用同一个方法时,在方法体的内部使用this进行记录
因此this代表的对象也就不同,当访问成员变量时候默认解析为:this.成员变量名,
其中this.相当于汉语中“我的”,因此this的不同导致结果不同
使用场合:
1.当形参变量名和成员变量名相同时,在方法体的内部会优先选择遍历使用,此时就需要使用this.的方式
明确使用的成员变量而不是形参变量(重点)
2.在构造方法的第一行使用this(实参)的方式可以调用本类中其他构造方法
常见异常
java.lang.NullPointerException ——————空指针异常
java.lang.ArrayIndexOfBoundsException ———————数组下标越界异常
java.lang.ArithmeticException ———————————算术异常