Java总结
标识符
? Java对各种变量、方法和类等要素命名时使用的字符数列称为标识符。
? 凡是自己可以起名字的地方都叫标识符,都遵循标识符的规则
? Java标识符命名规则:
? 标识符由字母、下划线“__”、美元”$”或数字组成
? 标识符应以字母、下划线、美元符开头
? Java标识符大小写敏感,长度无限制
? 约定俗成:Java标识符选取因“见名知意”且不能与Java语言的关键字重名
关键字
? Java中一些赋以特定的含义,用做专门用途的字符串称为关键字(keyword)。
? 大多数编译器会将关键字用特殊的方式标出
? 所有Java关键字都是小写英文。
? goto 和const虽然从未使用,但也作为被Java关键字保留。
Java常量
? Java的常量值用字符串表示,区分为不同的数据类型。
? 如整型常量123
? 实型常量3.12
? 字符常量?a?
? 逻辑常量true,false
? 字符串常量“helloword”
? 注意:区分字符串常量和字符常量
? 注意:“常量”这个名词还会用在另外其他语境中表示值不可变的变量
? 参见final关键字
Java变量
? Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
? Java程序中每一个变量都属于特定的数据类型,在使用前必须对其声明,声明格式:
? type varName[=value] [{,varName [=value]}]
? 例如:
? int I = 100;
? float f = 12.3f;
? double d1,d2,d3 = 0.123;
? String s = “Hello”;
? 从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用
Java变量的分类
? 按被声明的位置划分:
? 局部变量:方法或语句块内部定义的变量
? 成员变量:方法外部、类的内部定义的变量
? 注意:类外部(与类对应的大括号外面)不能有变量的声明
? 按所属的数据类型划分:
? 基本数据类型变量
? 引用数据类型变量
Java局部变量与成员变量
? 方法体内部声明的变量(包括形参)称为局部变量:
? 方法体内部是指与方法对应的大括号内部
? 在方法体外,类体内声明的变量成为成员变量
? public void method(){
? int i;
? int j = i+5; //编译出错,变量i还未被初始化
? double d = 3.14;
? Dog dog;
? Dog = new Dog(22,1964);
? }
? 注:以上程序面前还不能编译
Java基本数据类型
? Java中定义了4类8种基本数据类型
? 逻辑型—boolean
? 文本型---char
? 整数型---byte,short,int,long
? 浮点数型---float,double
逻辑型boolean
? boolean类型适于逻辑运算,一般用于程序流程控制。
? boolean类型数据只容许取值true或false,不可以0或非0的整数替代true和false,这点和C语言不同。 字符型char
? Char型数据用来表示通常意义上“字符”
? 字符常量用单引号括起来的单个字符,例如:
? Char eChar = ?a?; char cChar = ?中?
? Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示,例如:
? Char c1 = ?\u0061?;
? 注:Unicode是全球语言统一编码
? Java语言中还允许使用转义字符?\?来将其后转变为其他含义,例如:
? Char c1 = ?\n?; //?\n?代表换行
? 补充:2进制,10进制,16机制之间的转换
? 1101 ---1*1 + 0*2 + 1*4 + 1*8
? 13 ---1 + 4 + 8 --- 1101
? 1101 --- D
整数类型
? Java各整数类型有固定的表示范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移
植性。
? Java语言整型常量的三种表示形式:
? 10进制整数:12 -314 0。
? 8进制,要求以0开头,如:012。
? 16进制,要求0x或0X开头,如:0x12
? Java语言的整型常量默认为int类型,声明long型常量可以后加?l?或?L?,如:
? int i1 = 600; long l1 = 888888888888888L;//必须加L否则出错
浮点类型
? 与整数类型类似,Java浮点类型有固定的表示范围和字段长度,不受平台影响。
? Java浮点类型常量有两种表示形式:
? 10进制形式,例如:3.14 312.0
? 科学记数形式:3.14e2 3.14E2
? Java浮点数默认为double类型,如要声明一个常量为float类型,则需要在数字后面加f或F
? double d = 12323.6; float f = 12.3f;必须加f否则出错
基本数据类型转换
? Boolean类型不可以转换为其他的数据类型
? 整型,字符型、浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
? 容量小的类型自动转换为容量大的数据类型:数据类型按容量大小排序为:
? Byte,short,char->int ->long ->float -> double
? Byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型
? 容量大的数据类型转换为为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或
溢出:使用时格外注意。
? 有多种类型的数据混合也算时,系统首先自动的将所有数据类型转换为容量最大的,然后在进
行计算
? 实数常量(如:1.2) 默认为double
? 整数常量(如:12)默认为int
运算符
? Java语言支持如下运算符:
?
?
?
? 算术运算符:+、-、*、/、%、++、-- 关系运算符:>、<、>=、<=、==、!= 逻辑运算符:! 、&、|、^、&&、|| 位运算符:&、|、^、~、>>、<<、>>>
? 赋值运算符:=
? 扩展赋值运算符:+=、-=、*=、/=
? 字符串连接运算符:+
逻辑运算符
逻辑运算:!--逻辑非 &--逻辑与 |--逻辑或 ^--逻辑异或 &&--短路与 ||--短路或
赋值运算符与扩展赋值运算符
? 赋值运算符(=)
? 当”=”两侧数据类型不一致时,可以适用默认类型转换或使用强制类型转换原则进行处理
? long m = 100; int n = (int)m
? 注意:可以将整型常量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,只
要不超出其表示范围:
? byte b = 12; char c = 100;
? byte bb = 256; short s = -32769
字符串连接符
? “+”除用于算术加法运算外,还可以对字符串进行连接操作
? int id = 800 + 90
? String s = “Hello” + “World”;
? “+”运算符两侧的操作数中只要有一个字符串类型,系统自动将另一个操作数转换为字符串然后再进行
连接。
? int c = 12;
? System.out.println(“c=”+c);
? 当进行打印时,无论任何类型,都自动转为字符串进行打印
? System.out.println(c);
三目条件运算符
? 三目运算符,语法格式:
? X ? y : z
? 其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达
式y的值,否则整个运算结果为表达式z的值。
语句
? 条件语句—根据不同条件,执行不同语句
? if
? if…else
? if…else if
? if…else if…else if…else
? switch
? 循环语句—重复执行某些动作
? for
? while
? do…while
if语句
?
?
?
? if if…else… if…else if… if…else if…else if…
? if…else if…else if…else
? 只有一句需要执行的语句时,可以省略{}
for循环语句
? for语句为如下形式:
? for(表达式1; 表达式2; 表达式3){ 语句;……}
? 执行过程
达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false
? for语句中三个表达式都可以省略
while & do while语句
? while语句为如下形式:
? while(逻辑表达式){语句……}
? 执行过程:先判断逻辑表达式的值。若=true则执行其后面的语句,然后再次判断条件
并反复执行,直到条件不成立。
? do while语句为如下形式:
? do{语句…} while(逻辑表达式); ? 首先计算表达式1,接着执行表达式2,若表达式2的值=true,则执行语句,接着计算表
? 执行过程:先执行语句,再判断逻辑表达式的值,若为true,再执行语句,否则结束循
环。
break & continue语句
? break在循环体中用于强制退出循环,不再执行循环中剩余的部分
? continue在循环体内,用于终止当前的循环,返回到循环的开始处,接着开始新的一次循环。 switch语句(条件语句补充)
? switch(){
case xx:
….
case xx:
….
default:
….
? }
? 小心case穿透,推荐使用break语句
? 多个case可以合并到一起
? default可以省略,但不推荐省略
? 在switch语句里的选择值只能是字符或是常量。
方法
? Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式:
? [修饰符1,修饰符2…]返回值类型 方法名(形式参数列表){}
? 形式参数:在方法调用时用于接收外界输入的数据
? 实参:调用方法时实际传给方法的数据
?
?
?
? 返回值:方法在执行完毕后返回给调用它的环境的数据。 返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void Java语言中使用下述形式调用方法:对象名.方法名(实参列表) 实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配
? Return语句终止方法的运行指定要返回的数据
? Java中进行函数调用中传递参数时,遵循传递的原则:
? 基本类型传递的是该数据本身。引用类型传递的是对对象的引用,而不是对象本身
递归调用
? 递归调用指在方法执行过程中出现该方法本身的调用:
总结
? 标识符
? 不用记规则,动手
? 关键字
? 局部变量vs成员变量
? 变量作用域
? 内存布局
? 基础类型变量
? 4类8种,相互转换
? 分支、循环
? 方法
? 形参、实参、返回值、返回值类型
? 递归调用
1 、对象的初始化
(1 )非静态对象的初始化
在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int 型,初始化为0.
如果为对象:这些对象会按顺序初始化。
※在所有类成员初始化完成之后,才调用本类的构造方法创建对象。 构造方法的作用就是初始化。
(2 )静态对象的初始化
程序中主类的静态变量会在main方法执行前初始化。
不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某 类(注意此时未创建此类对象)的静态对象时,所有的静态变量也要按它们在类 中的顺序初始化。
2 、继承时,对象的初始化过程
(1 )主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private.
(2 )主类静态成员的初始化。
(3 )主类的超类由高到低进行默认构造方法的调用。注意,在调用每一个 超类的默认构造方法前,先进行对此超类进行非静态对象的初始化。 (4 )主类非静态成员的初始化。
(5 )调用主类的构造方法。
3 、关于构造方法
(1 )类可以没有构造方法,但如果有多个构造方法,就应该要有默认的构 造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造 方法了。
(2 )在一个构造方法中,只能调用一次其他的构造方法,并且调用构造方 法的语句必须是第一条语句。
4 、有关public、private 和protected
(1 )无public修饰的类,可以被其他类访问的条件是:a.两个类在同一文
件中,b.两个类在同一文件夹中,c.两个类在同一软件包中。
(2 )protected :继承类和同一软件包的类可访问。
(3 )如果构造方法为private ,那么在其他类中不能创建该类的对象。 5 、抽象类
(1 )抽象类不能创建对象。
(2 )如果一个类中一个方法为抽象方法,则这个类必须为abstract抽象类。
(3 )继承抽象类的类在类中必须实现抽象类中的抽象方法。
(4 )抽象类中可以有抽象方法,也可有非抽象方法。抽象方法不能为private.
(5 )间接继承抽象类的类可以不给出抽象方法的定义。
6 、final 关键字
(1 )一个对象是常量,不代表不能转变对象的成员,仍可以其成员进行操 作。
(2 )常量在使用前必须赋值,但除了在声明的同时初始化外,就只能在构 造方法中初始化。
(3 )final 修饰的方法不能被重置(在子类中不能出现同名方法)。 (4 )如果声明一个类为final ,则所有的方法均为final ,无论其是否被
final 修饰,但数据成员可为final 也可不是。
7 、接口interface (用implements来实现接口)
(1 )接口中的所有数据均为static和final 即静态常量。尽管可以不用这
两个关键字修饰,但必须给常量赋初值。
(2 )接口中的方法均为public,在实现接口类中,实现方法必须可public 关键字。
(3 )如果使用public来修饰接口,则接口必须与文件名相同。
8 、多重继承
(1 )一个类继承了一个类和接口,那么必须将类写在前面,接口写在后面, 接口之间用逗号分隔。
(2 )接口之间可多重继承,注意使用关键字extends.
(3 )一个类虽只实现了一个接口,但不仅要实现这个接口的所有方法,还 要实现这个接口继承的接口的方法,接口中的所有方法均须在类中实现。 9 、接口的嵌入
(1 )接口嵌入类中,可以使用private 修饰。此时,接口只能在所在的类
中实现,其他类不能访问。
(2 )嵌入接口中的接口一定要为public.
10、类的嵌入
(1 )类可以嵌入另一个类中,但不能嵌入接口中。
(2 )在静态方法或其他方法中,不能直接创建内部类对象,需通过手段来 取得。
手段有两种:
class A { class B {} B getB () { B b = new B(); return b ; } } static void m () { A a = new A(); A.B ab = a.getB(); // 或者 是 A.B ab = a.new B (); }
(3 )一个类继承了另一个类的内部类,因为超类是内部类,而内部类的构 造方法不能自动被调用,这样就需要在子类的构造方法中明确的调用超类的构造 方法。接上例:
class C extends A.B { C () { new A()。super (); // 这一句就 实现了对内部类构造方法的调用。 } }
构造方法也可这样写:
C (A a ) { a.super(); } // 使用这个构造方法创建对象,要写成C c = new C (a ); a是A 的对象。
11、异常类
JAVA中除了RunTimeException类,其他异常均须捕获或抛出。
Java基础知识总结写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代码实现用…
Java基础知识总结写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代码实现用…
Java基础知识总结写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代码实现用…
Java基础知识总结超级经典写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代…
JAVA基础知识总结第一章Java入门1java诞生19xx年5月23日Sun公司发布了jdk10版本作者JamesGosling…
一、JSP知识:1.用户第一次请求JSP页面时,JSP引擎会转译该JSP文件为Servlet文件(.java),并编译该文件,生成…
Java基础知识总结写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代码实现用…
Java基础知识总结写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代码实现用…
Java基础知识总结超级经典写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代…
Java基础知识总结写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代码实现用…
知识点:数组的声明PPT24-33数组的应用常用字符串方法复习:循环结构讲解作业2课堂任务:任务一、1.下面关于数组定义语句不正确…