第一篇:Java基础语法总结2
Java基础语法总结2
三、运算符
Java基 本 的 运 算 符 按功能分有 下 面 几 类 : 1.算 术 运 算 符(+,-,*,/,%,++,--)Java对 加 运 算 符 进 行 了 扩 展 ,使 它 能 够 进 行 字 符 串 的连 接,如 “abc”+“de”,得到 串 “abcde”。与 C、C++不 同 ,对 取 模 运 算 符 %来 说 ,其 操 作 数 可 以为浮点 数 , 如37.2%10=7.2。i++与 ++i的 区 别:i++在 使 用 i之 后 ,使 i的 值 加 1,因 此 执 行 完 i++后 ,整 个 表达式的 值 为 i,而 i的 值变 为 i+1;++i在 使 用 i之 前 ,使 i的 值 加 1,因 此 执 行 完 ++i后 ,整 个 表达式和 i的 值 均 为 i+1。
2.关 系 运 算 符(>,<,>=,<=,==,!=)该运算符的特点是:运算完的结果,要么是true,要么是false。Java中 ,任 何 数 据 类 型 的 数 据(包 括 基 本 类 型 和 组 合 类 型)都可 以 通 过 ==或!=来 比 较 是 否 相 等(这 与 C、C++不 同)。关 系 运 算 符 用 来 比 较 两 个 值 ,返 回 布 尔 类 型 的值true或 false,而不是C、C++中 的 1或 0。
3.布 尔 逻 辑 运 算 符(& | ^!&& ||)逻辑运算符除了!外都是用于连接两个boolean类型表达式。&: 只有两边都为true结果是true。否则就是false。|:只要两边都为false结果是false,否则就是true ^:异或:和或有点不一样。两边结果一样,就为false。两边结果不一样,就为true.& 和 &&区别: & :无论左边结果是什么,右边都参与运算。&&:短路与,如果左边为false,那么右边不参数与运算。| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。
4.位 运 算 符(>>,<<,>>>,&,|,^,~)用于操作二进制位的运算符,如2*8 = 2<<3。>>>(无符号右移)5.赋 值 运 算 符(= +=-= *= /= %=)6.条 件 运 算 符(?:)7.其 它(包 括 分 量 运 算 符 · ,下 标 运 算 符 [],实 例 运 算 符 instanc eof,内 存 分 配运 算 符 new,强 制 类 型 转 换 运 算 符(类 型), 方 法调 用 运 算 符()等)例子:对两个变量的数据进行互换。不需要第三方变量。int a = 3,b = 5;-->b = 3,a = 5;a = a + b;a = 8;b = ab;a = 5;a = a ^ b;//
b = a ^ b;//b = a ^ b ^ b = a a = a ^ b;//a = a ^ b ^ a = b;
Java 中共有 54 种运算符,按优先级可以分为 14 级:
优先级 操作符 含义 关联性 用法
--1 [ ] 数组下标 左 array_name[expr].成员选择 左 object.member
()方法参数 左 method_name(expr_list)()实例构造 左 class_name(expr_list)++ 后缀自增 左 lvalue++--后缀自减 左 lvalue--2 ++ 前缀自增 右 ++rvalue--前缀自减 右--lvalue ~ 按位取反 右 ~expr!逻辑非 右!expr + 一元加 右 +expr 减 左 expr-expr
+ 字符串连接 左 strExpr + strExpr 6 >> 有符号右移 左 expr >> distance >>> 无符号右移 左 expr >>> distance 7 < 小于 左 expr < expr <= 小于等于 左 expr <= expr > 大于 左 expr > expr >= 大于等于 左 expr >= expr
instanceof 类型比较 左 ref instanceof refType == 等于 左 expr == expr!= 不等于 左 expr!= expr & 整数按位与 左 integralExpr & integralExpr & 布尔与 左 booleanExpr & booleanExpr 9 ^ 整数按位异或 左 integralExpr ^ integralExpr ^ 布尔异或 左 booleanExpr ^ booleanExpr 10 | 整数按位或 左 integralExpr | integralExpr | 布尔或 左 booleanExpr | booleanExpr 11 && 逻辑与 左 booleanExpr && booleanExpr 12 || 逻辑或 左 booleanExpr || booleanExpr 13 ? : 条件运算 右 booleanExpr ? expr : expr 14 = 赋值 右 lvalue = expr *= 乘赋值 右 lvalue *= expr /= 除赋值 右 lvalue /= expr %= 模赋值 右 lvalue %= expr += 加赋值 右 lvalue += expr += 字符串连接赋值 右 lvalue += expr-= 减赋值 右 lvalue-= expr <<= 左移赋值 右 lvalue <<= expr >>= 有符号右移赋值 右 lvalue >>= expr >>>= 无符号右移赋值 右 lvalue >>>= expr &= 整数按位与赋值 右 lvalue &= expr &= 布尔与赋值 右 lvalue &= expr |= 整数按位或赋值 右 lvalue |= expr |= 布尔或赋值 右 lvalue |= expr ^= 整数按位异或赋值 右 lvalue ^= expr ^= 布尔异或赋值 右 lvalue ^= expr
运算符不但有优先级,还有关联性。上表中关联性为“左”表示该表达式从左边开始进行运算;关联性为“右”表示该表达式从右边开始进行运算。
四、流程控制语句(If、switch、do while、while、for、break、continue)1.当判断数据范围,获取判断运算结果boolean类型时,需要使用if;当判断固定个数的值的时候,可以使用if,也可以使用switch。但是建议使用switch,效率相对较高。switch(变量){ case 值:要执行的语句;break;…
default:要执行的语句;} 工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了就执行哪个case后面的语句,如果没有相同的则执行default后面的语句; 细节:1):break是可以省略的,如果省略了就一直执行到遇到break 为止; 2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种; 3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。
2.当某些语句需要执行很多次时,就用循环结构。
while和for可以进行互换。区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。
3.break:作用于switch,和循环语句,用于跳出,或者称为结束。break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。4.continue:只作用于循环结构,继续循环用的。作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。
第二篇:java基本语法总结
一、标识符及字符集
Java语言规定标识符是以字母、下划线“_”或美元符号“$”开始,随后可跟数字、字母、下划线或美元符号的字符序列。Java标识符大小写敏感,没有长度限制,可以为标识符取任意长度的名字,但关键字不能作为标识符。为增强程序可读性,Java作如下的约定:
1.类、接口:通常使用名词,且每个单词的首字母要大写
2.方法:通常使用动词,首字母小写,其后用大写字母分隔每个单词 3.常量:全部大写,单词之间用下划线分隔
4.变量:通常使用名词,首字母小写,其后大写字母分隔每个单词,避免使用$符号。
Java语言使用国际字符集(Unicode)。Unicode字符集定义了一套国际标准字符集。通常的ASCII码是8位的,而Unicode字符集中的每个字符占16位,即2个字节,整个字符集共包括65336个字符,兼容ASCII,排在Unicode字符集最前面的256个字符就是ASCII码。Unicode除了可以表示256个ASCII码外,还可以表示汉字、拉丁语、希腊字母、朝鲜语等。
Java标识符总结:1.由字母、数字、_或$组成,不能以数字开头;2.严格区分大小写;3.长度不限
二、关键字
Java常用关键字列表如下: 关键字
含义
用在类的声明中来指明一个类是不能被Abstract
实例化的,但是可以被其它类继承。一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现
Boolean Break
布尔类型,只有true或者false 停止,并跳出本层循环
8bit(位),也就是8个1/0表示,即二进制 Byte
用来定义一组分支选择,如果某个值和Case
switch中给出的值一样,就会从该分支开始执行。
用来声明当try语句块中发生运行时错误或非运行时异常时运行的一个块。用来定义一个字符类型 类
在Java中,const是作为保留字以备扩充,同样的保留字以备扩充还有goto.你Const
可以用final关键字.final也可以用于声明方法或类,被声明为final的方法或类不能被继承。一般C里是const 对应java用final
用来打断当前循环过程,从当前循环的最Continue
后重新开始执行,如果后面跟有一个标签,则从标签对应的地方开始执行。配合switch跟case使用,但case中没Default
有找到匹配时,则输出或者为default后面的语句。
用来声明一个循环,这个循环的结束条件可以通过while关键字设置 用来定义一个double类型的变量 如果if语句的条件不满足就会执行该语句。Catch
Char Class
Do
Double
Else
Extends
extends 继承 类X 通过extend 类Y来
添加功能,或者添加变量,或者添加方法,或者覆盖类Y的方法。一个接口extends另外一个接口来添加方法。
False
假的
一个Java语言的关键字。你只能定义一个实体一次,以后不能改变它或继承它。Final
更严格的讲:一个final修饰的类不能被子类化,一个final修饰的方法不能被重写,一个final修饰的变量不能改变其初始值。
用来执行一段代码不管在前面定义的try语句中是否有异常或运行时错误发生。用来定义一个浮点数变量
用来声明一个循环。程序员可以指定要循环的语句,推出条件和初始化变量。虽然为Java关键字,但是仅在C语言里面使用,Java不提供Goto语句
Java编程语言的一个关键字,用来生成一If
个条件测试,如果条件为真,就执行if下的语句。
Java(TM)编程语言的一个关键字,在类的Implements
声明中是可选的,用来指明当前类实现的接口。
Java(TM)编程语言的一个关键字,在源文Import
件的开始部分指明后面将要引用的一个类或整个包,这样就不必在使用的时候加Finally
Float
For
Goto
上包的名字。
一个二操作数的Java(TM)语言关键字,用Instaceof
来测试第一个参数的运行时类型是否和第二个参数兼容。
Java(TM)的一个关键字,用来定义一个整形变量
Java(TM)的一个关键字,用来定义一系列Interface 的方法和常量。它可以被类实现,通过implements关键字。
Long Native New
用来定义一个long类型的变量 本地方法。
用来创建一个新的方法
当String类型没赋值时,该变量的值为Null 包的意思
用在方法或变量的声中。它表示这个方法或变量只能被这个类的其它元素所访问。在方法和变量的声明中使用,它表示这个Protected
方法或变量只能被同一个类中的,子类中的或者同一个包中的类中的元素所访问。在方法和变量的声明中使用,它表示这个方法或变量能够被其它类中的元素访问。Int
Null
Package
Private
Public
Return
用来结束一个方法的执行。它后面可以跟
一个方法声明中要求的值。
Short
用来定义一个short类型的变量。用来定义一个变量为类变量。类只维护一个类变量的拷贝,不管该类当前有多少个Static
实例。“static” 同样能够用来定义一个方法为类方法。类方法通过类名调用而不是特定的实例,并且只能操作类变量。
Super
父类
是一个选择语句,与case,default,break一起使用。线程同步
用来代表它出现的类的一个实例。this可以用来访问类变量和类方法。
允许用户抛出一个exception对象或者任何实现throwable的对象
用在方法的声明中来说明哪些异常这个Throws
方法是不处理的,而是提交到程序的更高一层。
用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,Transient
transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。Switch
Synchronized
This
Threadsafe
Throw True 真的
用来定义一个可能抛出异常语句块。如果一个异常被抛出,一个可选的catch语句Try 块会处理try语句块中抛出的异常。同时,一个finally语句块会被执行,无论一个异常是否被抛出。
用在Java语言的方法声明中说明这个方Void 法没有任何返回值。“void”也可以用来表示一句没有任何功能的语句。
用在变量的声明中表示这个变量是被同时运行的几个线程异步修改的。用来定义一段反复执行的循环语句。循环的退出条件是while语句的一部分。volatile
while
分类如下:
1.访问控制:private 私有的 protected 受保护的 public 公共的
2.类、方法和变量修饰符abstract 声明抽象 class 类 extends 扩允,继承 final 终极,不可改变的implements实现 interface 接口 native 本地 new 新,创建 static 静态 strictfp 严格,精准synchronized 线程,同步 transient 短暂 volatile 易失
3.程序控制语句 break 跳出循环 continue 继续 return 返回 do 运行 while 循环 if 如果 else 反之 for 循 instanceof 实例 switch 开关 case 返回开关里的结果 default 默认
4.错误处理 catch 处理异常 finally 有没有异常都执行 throw 抛出一个异常对象
throws 声明一个异常可能被抛出 try 捕获异常 5.包相关import 引入 package 包
6.基本类型 boolean 布尔型 byte 字节型 char 字符型 double 双精度 float 浮点 int 整型 long 长整型 short 短整型 null 空 true 真 false 假 7.变量引用 super 父类,超类 this 本类 void 无返回值
注意:
1、所有的java关键字都是小写的
2、goto 和const 是保留关键字,在java 中没使用
3、strictfp 和volatile 不常用; sizeof、then 不是关键字。4、true,false,null 不是严格意义上的关键字,而是literals
三、运算符
Java基 本 的 运 算 符 按功能分有 下 面 几 类 : 1.算 术 运 算 符(+,-,*,/,%,++,--)Java对 加 运 算 符 进 行 了 扩 展 ,使 它 能 够 进 行 字 符 串 的连 接,如 “abc”+“de”,得到 串 “abcde”。与 C、C++不 同 ,对 取 模 运 算 符 %来 说 ,其 操 作 数 可 以为浮点 数 , 如37.2%10=7.2。i++与 ++i的 区 别:i++在 使 用 i之 后 ,使 i的 值 加 1,因 此 执 行 完 i++后 ,整 个 表达式的 值 为 i,而 i的 值变 为 i+1;++i在 使 用 i之 前 ,使 i的 值 加 1,因 此 执 行 完 ++i后 ,整 个 表达式和 i的 值 均 为 i+1。
2.关 系 运 算 符(>,<,>=,<=,==,!=)该运算符的特点是:运算完的结果,要么是true,要么是false。Java中 ,任 何 数 据 类 型 的 数 据(包 括 基 本 类 型 和 组 合 类 型)都可 以 通 过 ==或!=来 比 较 是 否 相 等(这 与 C、C++不 同)。关 系 运 算 符 用 来 比 较 两 个 值 ,返 回 布 尔 类 型 的值true或 false,而不是C、C++中 的 1或 0。
3.布 尔 逻 辑 运 算 符(& | ^!&& ||)逻辑运算符除了!外都是用于连接两个boolean类型表达式。&: 只有两边都为true结果是true。否则就是false。|:只要两边都为false结果是false,否则就是true ^:异或:和或有点不一样。两边结果一样,就为false。两边结果不一样,就为true.& 和 &&区别: & :无论左边结果是什么,右边都参与运算。&&:短路与,如果左边为false,那么右边不参数与运算。| 和|| 区别:|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。4.位 运 算 符(>>,<<,>>>,&,|,^,~)用于操作二进制位的运算符,如2*8 = 2<<3。>>>(无符号右移)5.赋 值 运 算 符(= +=-= *= /= %=)6.条 件 运 算 符(?:)7.其 它(包 括 分 量 运 算 符 · ,下 标 运 算 符 [],实 例 运 算 符 instanc eof,内 存 分 配运 算 符 new,强 制 类 型 转 换 运 算 符(类 型), 方 法调 用 运 算 符()等)例子:对两个变量的数据进行互换。不需要第三方变量。
int a = 3,b = 5;-->b = 3,a = 5;a = a + b;a = 8;b = ab;a = 5;a = a ^ b;//
b = a ^ b;//b = a ^ b ^ b = a a = a ^ b;//a = a ^ b ^ a = b;
Java 中共有 54 种运算符,按优先级可以分为 14 级:
优先级 操作符 含义 关联性 用法
--1 [ ] 数组下标 左 array_name[expr].成员选择 左 object.member
()方法参数 左 method_name(expr_list)()实例构造 左 class_name(expr_list)++ 后缀自增 左 lvalue++--后缀自减 左 lvalue--2 ++ 前缀自增 右 ++rvalue--前缀自减 右--lvalue ~ 按位取反 右 ~expr!逻辑非 右!expr + 一元加 右 +expr减 左 expr-expr
+ 字符串连接 左 strExpr + strExpr 6 >> 有符号右移 左 expr >> distance >>> 无符号右移 左 expr >>> distance 7 < 小于 左 expr < expr <= 小于等于 左 expr <= expr > 大于 左 expr > expr >= 大于等于 左 expr >= expr
instanceof 类型比较 左 ref instanceof refType == 等于 左 expr == expr!= 不等于 左 expr!= expr & 整数按位与 左 integralExpr & integralExpr & 布尔与 左 booleanExpr & booleanExpr 9 ^ 整数按位异或 左 integralExpr ^ integralExpr ^ 布尔异或 左 booleanExpr ^ booleanExpr 10 | 整数按位或 左 integralExpr | integralExpr | 布尔或 左 booleanExpr | booleanExpr 11 && 逻辑与 左 booleanExpr && booleanExpr 12 || 逻辑或 左 booleanExpr || booleanExpr 13 ? : 条件运算 右 booleanExpr ? expr : expr 14 = 赋值 右 lvalue = expr *= 乘赋值 右 lvalue *= expr /= 除赋值 右 lvalue /= expr %= 模赋值 右 lvalue %= expr += 加赋值 右 lvalue += expr += 字符串连接赋值 右 lvalue += expr-= 减赋值 右 lvalue-= expr <<= 左移赋值 右 lvalue <<= expr >>= 有符号右移赋值 右 lvalue >>= expr >>>= 无符号右移赋值 右 lvalue >>>= expr &= 整数按位与赋值 右 lvalue &= expr &= 布尔与赋值 右 lvalue &= expr |= 整数按位或赋值 右 lvalue |= expr |= 布尔或赋值 右 lvalue |= expr ^= 整数按位异或赋值 右 lvalue ^= expr ^= 布尔异或赋值 右 lvalue ^= expr
运算符不但有优先级,还有关联性。上表中关联性为“左”表示该表达式从左边开始进行运算;关联性为“右”表示该表达式从右边开始进行运算。
四、流程控制语句(If、switch、do while、while、for、break、continue)1.当判断数据范围,获取判断运算结果boolean类型时,需要使用if;当判断固定个数的值的时候,可以使用if,也可以使用switch。但是建议使用switch,效率相对较高。switch(变量){ case 值:要执行的语句;break;…
default:要执行的语句;} 工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了就执行哪个case后面的语句,如果没有相同的则执行default后面的语句; 细节:1):break是可以省略的,如果省略了就一直执行到遇到break 为止; 2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种; 3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。
2.当某些语句需要执行很多次时,就用循环结构。
while和for可以进行互换。区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。
3.break:作用于switch,和循环语句,用于跳出,或者称为结束。break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。4.continue:只作用于循环结构,继续循环用的。作用:结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。
第三篇:JAVA基础总结
JAVA基础总结
转眼间,已经来到这里学习半年了,而现在我们对于JAVA学习才算是真正的开始。一开始接触的时候我发现这个和C语言的基本语法几乎一模一样的,老师说:JAVA语言本来就是C++语言发展过来的,而C++是从C语言发展来的,C C++ 还有JAVA虽然是不同的三种语言,但是其实他们的基本语法是一样的,但是它们却有巨大的区别,这个区别主要是体现在思想上。
都说C语言是面向过程的语言,C++ C#和JAVA是面向对象的编程,其实就是思维方式稍微改了一下子,面向过程的语言主要是着重于算法,面向对象着重于逻辑而已。
这个教我们的老师是张成峰老师,张成峰是个很负责的老师,虽然JAVA基础其实和C语言基础差不多,但是仔细学学还是能找出很多不同的细节的,于是大家的问题就很多,张老师几乎就是手把手的教我们,所以整体来说JAVA基础学得挺扎实的。
我在这本书的学习不是挺好,联系得少了,所以对代码也不是特别熟悉。而且JAVA是一门重概念的书,对于我来说,概念是我的要害,理论知识也是我最怕学习的,所以学习这本书对我来说很是艰难,听了很久的课,代码写得出来,但是理论知识几乎一点也不明白,结果就造成了这次笔试考的不好。
笔试考的不好,机试也因为我的粗心没有考好,所以这次的成绩不好。
学习JAVA基础后,还要在学习的过程中对每个知识都要用心和细心,当然最该注重的地方就是应该提高我对理论知识的学习,要多看书,也要多敲敲代码,这些就是提高学习知识全面的方法。
下一本书学习的是JAVAOO算是JAVA的一个重要的内容了,这才会真正的接触JAVA的核心课程,在这本书里我要好好的理解理论知识,仔细的学习每个知识。
第四篇:Java基础总结
基本数据类型
变量单元直接存放数据
赋值和传参的方式:传值,即传递副本
比较相等使用关系运算符“==”
引用数据类型
变量单元存放引用即对象地址,而数据(对象)在另一内存区域存放。
赋值和传参的方式:传引用(传递对象的地址),即传递对象本身。
使用关系运算符“==”比较两个引用类型变量,比较的是地址,如果比较结果为
真,说明两个变量引用了同一对象。
比较两个对象是否相等应使用equals方法
Java是面向对象的语言,开发Java程序就是开发Java类,Java的变量定义、方法(函
数)和语句都必须在类中书写,“无类即无Java”。
类的实例成员
属性(成员变量):直接定义在类体中的变量(注:在方法或语句块中定义的变量不是属性)
方法:直接定义在类体中的方法。
类成员:直接定义在类体中的内部类,即类成员。
注:对象的成员是从属于对象的,必须通过对象访问,在Java中不存在脱离对象和类而独立存在的属性和方法。
类、方法、语句三者的关系:
类中包含方法,方法中包含语句;方法中不能嵌套方法;语句不能直接写在类体中。
变量的作用域
局部变量-方法的参数、方法体中定义的变量、语句块中定义的变量,仅在所定义的方法体或语句块中有效。
属性-在整个类体中有效。
公有的属性-其它类可以本类对象访问。
私有的属性-仅限本类内访问
局部变量(无论基本类型还是引用类型)在栈内存中,对象在堆内存中。注:引用类型的局部变量内存放是对象的引用(即地址),而对象在堆内存中。
方法的重载-在同一类中多个方法同名的语法现象,方法重载应符合以下条件:
方法同名
参数有所不同(即类型、个数和顺序三者至少有一个不同)
注:方法是否重载不考虑返回类型等其它方面。
包和访问修饰符
包-类的目录结构,主要用途是方便类的管理。
类的简称:不含包名的类名
类的全限定名称(类的全称):带包名的类名。
访问修饰符
private-仅限本类内访问
public-任何类都能够访问
默认-限本包的类访问
protected--限本包的类访问和子类的访问
类的成员(属性、方法和成员内部类)可以使用四种访问修饰符,顶级外部类仅能
使用public和默认两种修饰符。
数组
基本类型的数组的元素放的是数据
对象数据的元素放的是对象的引用
二维数组实际上是一个维数组,而其每个元素又是一个一维数组。
构造方法-与类名同名并且无返回类型的方法
构造方法的作用是创建对象,仅能通过new关键字调用。
类中未显式定义构造方法时,类中会有默认的构造方法(即一个public、无参的构
造方法);类中一旦定义显式定义构造方法,将不再产生默认的构造方法。
构造方法可以重载
构造方法只能可以使用四个访问修饰符,不可以使用其它修饰符(如static、final
等)。
this关键字
this表示本对象或对象自身的引用
通过this可以调用本类的成员方法和属性
通过this可以调用本类的构造方法,this调用构造方法的语句必须写在构造方法的第一句。
实例成员和静态成员
类的成员(属性、方法和成员类)可划分为静态成员和实例成员。
实例成员是属于对象的,随着对象的创建而存在,随着对象的销毁而销毁。 静态成员是属于类的,随着类的加载而存在,随着类的销毁而销毁。
使用static修饰的成员是静态成员,未使用static修饰的成员是实例成员。 静态成员内不能使用this关键字。
this表示当前对象的引用。
对象的初始化
第一:实例属性赋默认值
第二:实例属性赋初值
第三:执行对象初始化块
第四:执行构造方法
类的初始化
第一:静态属性赋默认值
第二:静态属性赋初值
第三:执行静态块
继承的基本概念
Java仅支持单继承
如果一个类没有显式继承任何类,则隐式继承java.lang.Object类 子类拥有父类的一切,子类对象由两部分构成:父类对象部分和子类个性化的部分。 子类并不能访问父类的一切: 子类可以访问父类的public成员和protected成员 子类不可以访问父类的private成员 仅当子类与父类同在一包时,子类方可以访问父类的默认访问控制的成员。继承与类和对象的初始化 构造子类对象时,首先构造父类对象,其次构造子类个性化部分,两者共同构成完整的子类对象,即首先进行父类对象的初始化,在初始化子类对象(个性化)部分。 子类构造方法的执行首先调用父类的构造方法。 若在子类构造方法中无显式调用父类构造方法的语句,则系统默认调用父类中可访问的无参的构造方法,如果这时候父类中恰好没有这样的构造方法,则编译出错。 在子类的构造方法中可以通过super关键字调用父类构造方法。这样的调用语句只能出现在子类构造方法的第一句。 关于初始化的顺序 初始化父类 初始化子类 初始化父类对象 初始化子类对象 继承与类型转换 子类型对象可以自动转型为父类型 父类型引用某个子类型对象时,可以强制转化为这个具体的子类型 方法重写 在继承的情况下,子类的实例方法与父类的实例方法的方法名称、参数、返回类型、throws声明完全一致,并且该子类方法的访问权限不低于父类方法的访问权限,即方法重写(子类方法重写了父类方法),也称方法覆盖。 方法重写仅存在于父子类中的实例方法,静态方法没有重写的概念。 当通过子类型对象执行重写方法时,将始终表现为子类的行为,而且无论引用对象的变量是父类型还是子类型,也无论是直接调用还是通过父类型其它方法间接调用,都将如此。 final修饰的方法不可以被重写 final修饰的类不可以被继承 隐藏成员变量 如果子类和父类中定义了同名称的成员变量,则称子类隐藏了父类的成员变量 通过父类方法访问隐藏的成员变量时,将获得父类成员变量 通过子类方法访问隐藏的成员变量时,将获得子类成员变量 通过父类型的引用直接访问隐藏的成员变量时,将获得父类成员变量 通过子类型的引用直接访问隐藏的成员变量时,将获得子类成员变量 super关键字
super仅能用于子类中表示本对象的父对象部分
super可以调用父类型的构造方法
Super可以调用父类的成员
Super不可以使用在静态上下文中
Super不可以做为参数传递,不可以做为返回值返回。
当方法重写时,或父类成员变量被隐藏时,子类中只能通过super访问父类方法和
父类成员变量
final关键字
用于变量,表示变量的值不可改变
用于类,表示类不可被继承
用于方法,表示方法不可以被重写
关于final变量的初始化时机
局部变量:声明的时候初始化
实例成员变量:声明、对象初始化块和构造方法三处之一
静态成员变量:声明、静态块两处之一
抽象类
抽象类可以包含抽象方法,也可以不包含抽象方法
含有抽象方法的类必须定义为抽象类
抽象类有构造方法
抽象类不能够实例化
通过抽象类可以调用其静态成员
抽象类是需要由子类继承的,因此抽象类不允许是final类
抽象方法
抽象方法没有方法体,包括一对空的大括号也不允许有
抽象方法必须是实例方法,抽象方法不允许是final的 抽象类与继承
抽象类可以被继承
若抽象类的子类是非抽象类,则该子类必须实现(重写)其父类的所有抽象方法 若抽象类的子类也是抽象类,则该子类可以不实现(重写)其父类的全部或部分抽象
方法。
接口
接口也是数据类型,可以将其理解为“纯”抽象类
接口不是类,也没有构造方法,不能够实例化
接口中的属性一律是public、static、final的,并可以省略这三个关键字
接口的方法一律是public、abstract的,并且可以省略这两个关键字
接口中可以不包含任何属性和方法
接口与实现
接口不是类,因此接口与类的关系不是“继承”关系,而是“实现”关系,我们可
以将实现理解为继承(尽管这并不恰当)
如果接口的实现类是抽象类,则该实现类可以不实现接口的全部或部分方法 如果接口的实现类是非抽象类,则该实现类必须实现接口的全部方法
一个类可以实现多个接口
接口与继承
接口之间可以相互继承
一个接口可以继承多个接口
接口与类型转换
接口的的子类型对象可以自动向上转型为接口类型
接口的子类型指:是接口的实现类或者接口的子接口
如果变量引用的对象实际是某个接口的实现类对象,而变量的类型不是这个接口的子类型,那么则可以强制转换为这个接口类型。
异常的类层次结构
Throwable错误类,表示不可恢复的致命错误
Exception运行时异常,此类异常可以不做显式处理
非运行时异常catch
声明抛出 在方法头通过throws声明可能抛出的异常类型
异常机制的五个关键字
try catch finally throw throws
如何使用
try-catch
try-catch-finally注:只要try执行,其对应的finally块才必然执行
try-finally注:只要try执行,其对应的finally块才必然执行
throw 主动抛出一个异常
throws 用在方法声明头部,声明方法可能抛出异常
finally代码块多用于书写资源回收代码
Java集合类(集合框架)
Collection接口
List接口 允许重复元素,元素有索引序号,并按放入元素的次序编号
ArrayList 线性表结构,查找快,增删慢
LinkedList 链表结构,查找慢,增删快
Vector 同步,查找、增删性能都不高。
Set接口 不允许重复元素,元素无索引编号
HashSet 元素散列存放
TreeSet元素按自然顺序排序(即从小到大排序)
Map接口
HashMap
允许null值和null键
不同步
Hashtable <--Properties
不允许null值和null键
同步
内部类
第五篇:SAS基础语法总结
一、DATA语句
DATA语句的作用是表明数据步的开始并给出数据集 的名称。
DATA语句的格式为:
DATA 数据集的名称;
数据集的名称必须以英文字母开始,最长不超过8个字符。
二、CARDS语句
CARDS语句的作用是与“;”呼应,标志数据行的开始与结束。
CARDS语句的格式为:
CARDS;数据行;如果使用CARS语句,在CARDS的后面必须紧跟数据行,并且在一个数据步中最多只能使用一个CARDS语句。
三、INPUT 语句
INPUT语句的作用是描述输入记录中的数据,并把输入值赋给相应的变量。INPUT语句的格式为:
INPUT 数据的变量名、顺序及类型;
用INPUT语句是为了读取外部文件的数据或跟在CARDS语句后面的数据。
SAS默认用INPUT语句读取的是数值类型变量的值。若在变量后加’$’,则该变量为字符串类型变量。
为从一行读入多个观测值,应使用行保持符’@@’限制度数指针,使其保持在这一行上读数,知道数据读完为止。
例如:
Input x y@@;
Cards;
8
;
四、INFILE语句
Infile语句的作用是指明外部数据文件的名称,并从这个外部数据文件中读取数据。
INFILE语句的格式为: INFILE ‘外部数据文件名’;
例如,在D盘上有一个名称为xiao.txt的数据文件,其中数据排列为:
A 3.16 B 2.9 B 5.8 B 3 A 4.9 A 4.17 用 INFILE语句读取数据的代码为:
Data ex;Infile ‘D:xiao.txt’;Input z$ x@@;Proc print;
Run;
五、SET语句
SET语句的作用是按照指定的条件从指定的数据集中读取数据机那里新的数据集获奖两个数据集中的观测值纵向连接建立新的数据集。
SET语句的格式为:
SET 数据集名表;例如,从数据集EX中读取数据建立新的数据集EX1,可编辑语句:
DATA EX1;SET EX;将两个数据集D1和D2中的观测值纵向连接建立新的数据集D3,可编辑语句:
DATA D3;SET D1 D2;
六、MERGE语句
MERGE语句的作用是将两个数据集中的各个观测值横向合并建立新的数据集。
MERGE语句的格式为:
MERGE 数据集名表;例如,将数据集D1与D2中的观测值横向合并建立新的数据集D3,可编辑语句:
DATA D3;MERGE D1 D2;
RUN;
七、DROP语句
DROP语句的作用是指定不写到数据集中的变量。DROP语句的格式为:
DROP 变量名表;如果在DATA步中有DROP语句,那么DROP语句中一出现的变量的观测值被删除,未出现的变量的观测值仍保留在新的数据集中。
八、KEEP语句
KEEP语句的作用是指定要写到数据集中的变量。KEEP语句的格式为:
KEEP 变量名表;如果在DATA步4中有KEEP语句,那么KEEP语句中未出现的变量的观测值被删除,已出现的变量的观测值被保留在西你的数据集中。
九、IF语句
IF语句的作用是使SAS继续处理符合IF条件规定的观测值,因而所得到的数据集是原数据集的子集。IF语句的格式为:
IF 条件表达式;如果表达式的值为真,SAS处理当前的观测值,执行DADA步中的语句,如果表达式的值是假,SAS马上返回到DATA步的开始,不处理当前的观测值,不执行DADA步中的语句。
十、PROC语句
PROC语句的作用是指定需要调用的过程以及该过程的若干选择项。PROC语句的格式为:
PROC SAS的过程名;例如,调用print过程,打印数据集ex的内容:
PROC print data=ex;这里的data=数据集名,用来指定本过程所要处理的数据集名,如缺省则处理最新建立的数据集。在PROC步中,还必须确认一些最基本的信息,包括:(1)处理的数据集名,格式为data=数据集名;(2)所涉及的变量名,格式为 var 变量名;(3)分组处理的标志,格式为 by 组变量名;
十一、CLASS语句
class语句的作用是在分析的过程中定义分类变量,再按分类变量的值分组进行数据分析。
Class语句的格式为:
CLASS 变量名;CLASS语句对数据分析所起的作用类似于by语句,但是它们打印输出的格式不相同,并且by语句要求先对变量排序后才能使用。
十二、FREQ语句
freq语句的作用是规定一个变量,以它的值作为数据集中观测值出现的频数。
FREQ语句的格式为:
FREQ 变量;假定某观测值的FREQ变量的值为n,在分析时,改数据集中这个观测值出现的频数便是n。
若n<1,则观测值不参加分析
若n不是整数,则自动取整。观测值的总数等于FREQ变量的和。
常用的SAS过程步
一、print过程
print过程可以打印一个SAS数据集中的全体或部分观测值,还可以打印数 值变量的综合或部分和。
print过程中经常使用的语句有:
proc print [选择项];
var 变量表;by 变量表;sum 变量表;在proc print 语句中可能出现的选择项有
data=数据集名,如果省略这一选择,则打印最新建立的数据集中的数据。
sum语句被用来求变量表中诸变量的总和。
二、sort过程
SORT过程将SAS数据集中的观测值按一个或多个变量的值进行排序,以便 其他的SAS过程利用by语句对这些观测值进行分组处理,排序后的观测值存放在一个新的SAS数据集中或者代替原来的数据集。在SORT过程中经常使用的语句有:
proc sort [选择项];
by 变量表;在proc sort语句中可能出现的选择项有:
data=数据集名,用来说明要排序的数据集名,如果省略这一选择,则指定最新建立的数据集。
out=数据集名,用来说明要输出的数据集名,如果省略这一选择,则原来的数据集被输出的数据集替换。sort过程默认按升序排列,若要按降序排列,在对应变量前增加选择项descending。
三、FORMAT过程
format过程可以对字符或数值变量定义一个所需要的输出格式,使data步以及含有format的语句的过程步中的变量都受到这一输出格式的限制。
通过proc FORMAT过程所定义的格式包括:(1)将输出值转换成不同的值、数值可以变成字符,字符可以变成另外的字符。(2)使输出值保留一定的小数位,否则输出值将有8个小数位。FORMAT过程由下列语句控制:
PROC FORMAT;
VALUE 格式名 格式的定义;为便于识别,格式名通常是原变量名加fmt
如果原变量是字符串,则应当在格式名前加字符串符号。后面的过程中,如果涉及到某变量的输出格式,必须有语句:
FORMAT 变量名 格式名
四、standard过程
standtard过程按给定的平均值和标准差对SAS数据集中的部分或全体变量进行“标准化”变换,并形成新的数据集。
在standard过程中经常使用的语句有:
proc standard [选择项];
var 变量表;freq 变量表;by 变量表;在proc standard语句中可能出现的选择项有:
data=数据集名,用来说明要“标准化”变换的数据集名,如果省略这一选择,则指定最新建立的数据集。
out=数据集名,用来说明含有“标准化”变量的新数据集名,如果忽略这一选择,SAS将按内部程式给出新的数据集名。
此过程将打印输出每个“标准化”变量的输入频数、平均值及标准差。
五、TRANSPOSE过程
transpose过程将一个数据集进行转置,使行变为列而列变为行,也就是使原数据集中样品的观测值变换成新数据集中变量的观测值,而原数据集中变量的观测值则变成新数据集中样品的观测值。transpose过程的格式为:
proc transpose [选择项];var 变量表;by 变量表;在proc transpose语句中可以出现的选择项有:
(1)data=数据集名,用来说明要转置的数据集名;如果忽略这一选择,则指定最新建立的数据集。
(2)out=数据集名,用来说明转置所建立的心数据集名,如果省略这一选择,SAS将按内部程式给出新的数据集名。
(3)prefix=字母(指定一个新前缀,用来构成新变量名)
(4)name=字母(为含有输入数据集中被转置的变量名的输出数据集中的变量命名,如果省略这一选择,SAS将按内部程式指定)。
在var语句中应列出要被转置的变量名,否则原数据集中未在其他语句中列出的所有数值型变量都将被转置,字符型变量必须在var语句中列出才能被转置,未被转置的变量不进入新的数据集,除非它们已经被列入copy或by语句。
by语句使输入数据集分组转置,分组变量被包括在输出数据集中。