Java
1.1 Java 历史
1995年由James Gosling
包括:
1.Java SE;
2.Java ME;
3.Java EE;
1.2 特点
1.可移植性
Java可以做到一次编写处处运行,java的运行方式,是在一台称为JVM虚拟机上进行运行的,是通过软件和硬件模拟出来的.对于虚拟机来说,缺点是对程序的性能会有一定的影响,但是随着硬件不断发展,性能的问题可以忽略不记,优点:是可以通过JVM实现跨平台开发
2.解释型语言
Java是一门解释型的语言,对于c/c++程序 java语言存在,执行的程序效率低,速度慢.Java通过在不同的平台上使用解释器,首先先对语法进行解释,之后在运行
3.具有多线程的开发能力
Java语言也是维数不多一种支持多线程处理的语言,通过多线程可以进行并发处理增加程序的执行效率
4.面向对象
面向对象是一种思想,或者可以理解为一种开发标准,随着面向对象的发展,在面向对象的领域里出现了如下的设计思想
面向对象的系统设计
面向对象的程序设计
1.3 class与public class区别
Public class 定义的类名称,必须与文件名称一致,否则程序将无法编译,在一个*.java文件中public class 定义的类名称只能出现一次
Class 定义的类: 文件名称可以与类名称不一致,class定义的类在*.java文件中可以出现多次,在编译的时候文件中出现几个class定义就会编译出来几个class文件
1.4 classpath 路径的设置
在默认情况下JVM加载class文件的路径是通过CLASSPATH设置的,而CLASSPATH默认是在当前路径读取。
如果想要解决CLASSPATH读取的问题,则可以手动设置CLASSPATH路径,设置的语法如下:
SET CLASSPATH=*.class 路径
如果想要设置CLASSPATH路径为当前目录则可以进行如下语法设置
SET CLASSPATH=.
1.5 注释
目的:方便阅读
1 单行注释//
2 多行注释 /**/
3 文档注释/** */
1.6 Java中的标识符
java中的标识符是由字母,数字,_, $ 组成,其中不能重复,不能以数字开头,**不能是java中的关键字(严格限制) **
每一个标识符最好有特殊的意义,studentName
注意:
1.Java中虽然规定了可以使用$符号定义标识符,但是实际上不要去使用,应为该符号存在特殊意义
2.标识符是区分大小写的
3.标识符命名方式:
a.类名使用 UpperCamelCase 风格,必须遵从驼峰形式,首字母大写
b.方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式,首字母小写,其他首字母大写
1.7 Java的关键字
PS:
1.goto作用为无条件跳转,没有在Java中使用。
2.assert jdk1.4增加的和enum关键字是在jdk1.5增加的内容。
1.8 数据类型(重点)
数据类型分为基本数据类型和引用数据类型
引用数据类型:类,接口,数组
基本数据类型: .........默认值
byte(字节型):0 JVM做了特殊处理,使其可以赋值
short(短整型):0
int(整形):0
long(长整型):0
float(单精度):0.0
double(双精度):0.0
char(字符型):'\u0000'
范例:
/*大小写字母的转换*/
public class TestDemo02
{
public static void main(String[]args){
char c='A'; //定义一个字符
int x=c; //char类型自动转换int类型
x=x+32; //把大写字母变为小写字母
char temp=(char)x;
System.out.println(temp);
}
}
注意:在Java中使用的是Unicode编码,不是ASCII编码。
面试题:
Char类型变量中能否保存一个中文,为什么?
能够存储一个中文的,应为java中使用的是uncode编码,一个char是占2个字节
boolean(布尔型):flase
从实际的开发角度如何去选择这些数据类型
Int类型:如果要去定义一个整数就去使用int类型,
整数的默认类型是int类型
double 类型: 做为小数的定义,一般来说就使用double
byte类型: 主要的作用作为数据的传输 IO
boolean:主要用于程序逻辑的操作
long: 使用该类型表示日期,文件的长度
查看int类型的最大值与最小值
integer.MAX_VALUE
integer.MIN_VALUE
1.9 数据类型的转换(重点)
在图中有 6 个实心箭头,表示无信息丢失的转换; 有 3 个虚箭头, 表示可能有精度
损失的转换。
自动类型转换
范围小的数据类型与范围大的数据类型进行操作,会默认转换为范围大的数据类型
强制数据转换
范围大的数据类型想要转换为范围小的数据类型则必须强制执行
注意:对于数据类型的强制转换,转换之前的数据必须是小范围数据能够接收的范围,如果超出接收数据的范围之后则数据依然会出现溢出
2.0 字符串
Java中使用String来定义字符串,它属于一个类(引用数据类型)
注意:
1.任意的数据类型与字符串进行相加操作结果都是为字符串(String)
2.数据类型的默认值在方法中是不起作用的,在方法中定义的数据类型必须给定一个默认值
2.1 运算符
2.1.1 自增与自减
先自增:先加一在进行表达式运算
后自增:先进行表达式运算在加一
2.1.2 逻辑运算符
1.与
2.或
3.非
普通与 与短路与的区别?
首先与操作必须要求所有条件必须为true 整体的结果才为true ,而普通与在进行判断的时候其中如果第一个条件为fasle 后继续判断后续条件(后续条件没有必要判断)
短路与 在进行条件判断的时候,假设第一个条件结果为fasle则后续不在判断(性能提高)
2.1.3 三目运算符
condition ? expression1 : expression2
2.2 程序结构
2.2.1 选择分支结构
2.2.1.1 if语句
语法:if(表达式){
执行语句}else{
执行语句}
2.2.1.2 分支嵌套
语法:if(表达式1){
执行语句1}else if(表达式2){
执行语句2}else if(表达式3){
执行语句3}else{//可有可无
执行语句4}
2.2.1.3 switch语句
switch 语法:
switch(表达式){
case 取值1:
语句块;
break;
case 取值2:
语句块;
break;
case 取值3:
语句块;
break;
default:
语句块4;
break;
}
switch语句规则:
1.表达式的返回值必需是下述几种类型之一:int,byte,char,short,确实的结果,
jdk1.7后支持String;
2.case字句中的取值必需是常量,且所有case字句中的取值应是不同的;
3.default字句是可选的;
4.break语句用来在执行完一个case分支后使程序跳出switch语句块;如果case后面没有写break则直接往下面执行;
5.case后面的执行体可写{}可不写{};
switch与if嵌套
语法:switch(){
case 取值n:
语句块;
if(表达式){...}
break;
default:
语句块;
break;
}
2.3 总结
if vs switch
同:
都是选择分支语句
异:
1.语法不同。
2.语句后的表达式值得类型不同,if语句表达式值得类型是Boolean,switch分支表达式值得类型是byte,short,char,int
枚举,String。
3.适用场景
if:变量的值在某个区间之内。
switch:变量的值是某个定值。
if vs 三目运算符
三目运算符都可以使用if语句实现,反之不成立。
Java 7 switch支持String的实现原理:
这个新特性是在编译器这个层次上实现的。
在编译的过程中,编译器会根据源代码的含义进行转换,不同的Java编译器可能采用不同的方式来转换
比如:如果switch语句中包含一个default语句,就可以转换成if-else语句。而对于复杂的情况(多个case语句),也可以转换成Java 7 之前的语句,只不过使用字符串的哈希值(整数)作为switch语句表达式的值。
小技巧:
在实现分支判断时,一个好的习惯是把匹配成功率更高的判断条件放在前面,提高效率。
在表达式中判断时,尽量拿确定的值跟不确定的值去判断。
2.4 循环语句
2.4.1 while 语句
语法:while(条件表达式){
//语句块;
}
符合条件:循环继续执行;否则,循环退出
特点:先判断,在执行
2.4.2 do while 语句
语法:do{
循环操作
}while(循环条件);
特点:先执行,在判断。最少执行一次。
2.4.3 for循环
语法:
for(初始化参数;判断条件;更新循环变量){
循环体;
}
for循环的六种写法:
1、标准写法
2、表达式1省略,但在外部声明
3、表达式2省略,死循环
4、表达式3省略,但要声明在循环的内部
5、表达式1,3省略,但要声明在循环的外部和内部
6、三个表达式都省略,死循环
2.5 break语句
在循环的执行过程中,可以使用break语句对正在运行的运行进行中断
应用范围:选择结构和循环结构
2.6 continue语句
Continue可以强迫循环语句跳到循环的起始处,当循环程序遇到continue的时候会结束当前的循环,跳到循环的起始处继续运行循环
应用范围:循环结构
注:
a.这两个语句离开应用范围没有意义。
b.这两个语句单独存在后面不跟语句,因为执行不到。
c.continue是结束本次循环,继续下一次循环。
d.标号的出现可以让这两个语句作用于指定范围
2.7 总结
1.变量有自己的作用域,对于for:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。for语句执行完毕,该变量在内存中被释放。
2.for和while可以互换,如果需要定义循环增量,for更合适。
是么时候用循环结构?
当某些语句执行很多次,用循环结构。
3.0 方法
定义:就是实现一段特定功能的代码块。提高程序的复用性和可读性
语法:
访问权限修饰符[其他的修饰符 如static] 返回值类型 方法名(参数类型1 形参1,参数类型2 形参2,参数类型3 形参3,...)//形参列表
{
//方法体
return 返回值;
}
3.1 方法的重载
定义:在类中可以创建多个相同名字(功能相同)的方法,但具有不同的参数和定义。返回值不能作为重载的条件。