马剑威_Java_02_Java语法基本功

合集下载

零基础学Java_ Java语言语法基础_

零基础学Java_ Java语言语法基础_

-263 ~ 263-1
……
2、基本数据类型
u 整形默认问题 üJava整型常量默认为int型,即如果直接给出一个整形数值,默认为int型。 ü声明long型常量后面加’l ’或’L’,推荐用L; n如整数 3、长整型3L;
u 注意默认特性的编程应用 n long k=9223368547758; n 改为:long k=9223368547758 ;
第二周学习指南
p 共6课时 ü讲解Java基本语法,无语言基础,建议逐一观看 ü有语言基础,可以选看,关注Java与其他语言的差别 ü注意英文提示
p 实践练习 ü 从2.3开始,每课时后的编程训练题,不管有无语言基础,均应逐一完成 ü 关注程序的编写与实际运行
Java的数据类型
主要内容: ü Java数据类型的分类 ü 8种基本数据类型 ü 理解引用类型的特点
ü占16位,2个字节,范围为0~65535 üUnicode编码,用\u0000到\uFFFF之间的十六进制数值来表 ü与ASCII码相比的优越性
…… 0000 0000
0110 0001
……
n Unicode字符表前256个字符和ASCII码重合
n 具有处理多语种的能力
如:小写a的编码值为97 大写A编码值65;
学习目标
w 理解Java 数据类型 的分类
w 掌握8种 基本数据 类型
w 初步了解引 用类型的特 点
什么是数据类型?
Cindy老师的个人资料填写
u 身高:163cm u 体重:48.5kg u 血型:B u 是否教师:是/true u ……
ü 计算机语言将数据按性质进行分类,每一类称为一种数据类型; ü 数据类型定义了数据的性质、取值范围、存储方式、对数据所能

[Java基础教程_兄弟连马剑威]_072_抽象类

[Java基础教程_兄弟连马剑威]_072_抽象类

美女
丑女
女人
美女丑女Biblioteka 2、抽象类的语法 抽象类的语法
• • • • • • • • • • • //声明一个抽象类 public abstract class Women{ private String name; public abstract void say();//抽象方法 } 抽象类的规则: 1、抽象类可以没有抽象方法,有抽象方法的类必须是抽象类 2、非抽象类继承抽象类必须实现所有抽象方法 非抽象类继承抽象类必须实现所有抽象方法 3、抽象类可以有方法实现和属性 4、抽象类不能被实例化 5、抽象类不能声明为 抽象类不能声明为final
抽象类
第 72 讲
马剑威
课程大纲
1、抽象类的基本概念 2、抽象类的语法
1、抽象类的基本概念 抽象类的基本概念
• • 1、很多具有相同特征和行为的对象可以抽象为一个类;很多具有相同特征 和行为的类可以抽象为 个抽象类。 和行为的类可以抽象为一个抽象类 2、使用abstract关键字声明的类为抽象类

[JAVA基础_兄弟连马剑威]_031_数组深入

[JAVA基础_兄弟连马剑威]_031_数组深入

2、使用字母打印nks
/u/3174423655 p
数组深入
第 31 讲
马剑威
课程大纲
1、使用数组要注意的问题 2、数组内存结构分析 3、多维数组 多维数组 4、作业
1、使用数组要注意的问题 使用数 要注意的问题
• • 空指针异常(NullPointerException) 数组越 异常 ArrayIndexOutOfBoundsException ) 数组越界异常(
2、数组内存结构分析 数 内存结构分析
names “梦梦” 梦梦 “纯纯” “萌萌” “爱爱” 栈内存 “凤凤” 堆内存
3、多维数组 多维数
• 还记得兄弟连程序大赛,3个班级各4名学员参赛,计算每个班的平 均分的作业题吗?
4、作业 作
1、猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数。

[Java基础教程_兄弟连马剑威]_091_StringBuffer类

[Java基础教程_兄弟连马剑威]_091_StringBuffer类

2、 StringBuffer类原码分析
• 查看StringBuffer的原代码
3、 StringBuffer常用操作方法
方法名称 public StringBuffer() public StringBuffer(String str) public StringBuffer(CharSequence seq) public StringBuffer append(数据类型 b) public StringBuffer delete(int start,int end) public int indexOf(String str) 描述 构造一个空的StringBuffer对象 将指定的String变为StringBuffer的内容 接收CharSequence接口的实例 提供了很多的append()方法,用于进行字符串连接 删除指定位置的内容 字符串的查询功能
3、 StringBuffer常用操作方法
方法名称 public StringBuffer insert(int offset,数据类型 b) public StringBuffer replace(int start,int end,String str) public StringBuffer reverse() public String substring(int start) public String substring(int start,int end) 描述 在指定位置上增加一个内容 将指定范围的内容替换成其他内容 字符串反转 字符串截取 截取指定范围的字符讲
马剑威
课程大纲
1、 StringBuffer类引入 2、 StringBuffer类原码分析 3、 StringBuffer常用操作方法 4、 StringBuffer的兄弟StringBuilder

[JAVA基础_兄弟连马剑威]_007_HelloWorld入门

[JAVA基础_兄弟连马剑威]_007_HelloWorld入门

3、用 用j java命令 命令运行程序 行程序
• • 编译程序完成后,在源文件目录上会自动生成一个HelloWorld.class文件,该文件即 为java的字节码文件,此时,我们就可以使用java命令运行程序: D:\lamp>java HelloWorld
H ll W ld入门 HelloWorld
第 7 讲
马Hale Waihona Puke 威课程大纲1、编写HelloWorld程序 2、用javac命令编译程序 3、用 用java命令运行程序
1、编写 编写HelloWorld程序
• • • • • public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!"); } }
2、用 用j javac命令编译程序
• • • Javac命令:编译程序 由于我们前面已经配置好了path环境变量,所以直接打开命令行程序( 环境变量 所以直接打开命令行程序(cmd),把目 ) 把目 录切换到HelloWorld.java目录下,使用命令编译程序: D:\lamp>javac HelloWorld.java

[Java基础教程_兄弟连马剑威]_044_匿名对象

[Java基础教程_兄弟连马剑威]_044_匿名对象
• 1、设计一个学生类,学生有三项成绩:计算机成绩、体育成绩、 音乐成绩 可以求出成绩的总分 平均分 最高 最低分 并且可 音乐成绩。可以求出成绩的总分、平均分、最高、最低分,并且可 以输出学生的全威
课程大纲
1、匿名对象
1、匿名对象 匿名对象
• • • • 1、匿名对象就是定义一个没有名称的对象 2、该对象的特点是只能使用一次 该 象的特点 能使用 次 3、该对象会直接在堆中开辟内存空间 4、该对象使用后会成为垃圾对象,被 该对象使用后会成为垃圾对象 被GC回收
作 作业

[Java基础教程_兄弟连马剑威]_117_hashCode与Collections


2、 Collections类
• • • • public class Collections extends Object 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。作为操作 Collections 的工具类。 典型的方法有:
谢谢Βιβλιοθήκη Thanks1、 hashCode深入分析
• • • • • • • • 在java的集合中,判断两个对象是否相等的规则是: (1)判断两个对象的hashCode是否相等 如果不相等,认为两个对象也不相等,结束 如果相等,转入2 (2)判断两个对象用equals运算是否相等 如果不相等,认为两个对象也不相等 如果相等,认为两个对象相等 (equals()是判断两个对象是否相等的关键)
hashCode与Collections
第 117 讲
马剑威
课程大纲
1、 hashCode深入分析 2、Collections类
1、 hashCode深入分析
• • • hashcode() 方法,在object类中定义如下: public native int hashCode(); hashCode是本地方法,它的实现是根据本地机器相关,当然我们可以在自己写的类 中覆盖hashcode()方法,比如String、Integer、Double。。。。等等这些类都是覆盖了 hashcode()方法的。

[Java基础教程_兄弟连马剑威]_056_值传递与引用传递


1、值传递与引用传递 值传递与引用传递
• • • • • • • • • • • 示例三:String传递 public class RefDemo2{ public static void main(String[] args){ String name = “小白”; method(name) th d( ); System.out.println(“name=”+name) ; } public bli static t ti void id method(String th d(St i sname){ ){ sname = “小红”; } }
值传递与引用传递
第 56 讲
马剑威
课程大纲ห้องสมุดไป่ตู้
1、值传递与引用传递
1、值传递与引用传递 值传递与引用传递
• • • • • • • • • • • 示例一:值传递 public class ValueDemo{ public static void main(String[] args){ int x = 10; method(x) th d( ) ; System.out.println(“x=”+x) ; } public bli static t ti void id method(int th d(i t mx){ ){ mx = 20; } }
1、值传递与引用传递 值传递与引用传递
• • • • • • • • • • • • • • 示例二:引用传递 public class RefDemo1{ public static void main(String[] args){ Cat c = new Cat(); method(c) th d( ) ; System.out.println(“Cat age = ”+c.age) ; } public bli static t ti void id method(Cat th d(C t cat){ t){ cat.age = 5; } } class Cat{ int age = 2; //省略封装 }

[Java基础教程_兄弟连马剑威]_133_反射机制

反射机制
第 133 讲
马剑威
课程大纲
1、什么是反射 2、Class类 3、通过Class类取得类信息 4、通过Class类调用属性或方法 5、动态代理
1、什么是反射
• 反射: Reflection
类信息
对象
对象
类信息
2、Class类
• • • • • Class类是一切的反射根源。 Class类表示什么? 很多的人——可以定义一个Person类(有年龄,性别,姓名等) 很多的车——可以定义一个Car类(有发动机,颜色,车轮等) 很多的类——Class类(类名,构造方法,属性,方法)
5、动态代理
• • • • Proxy类 protected Proxy(InvocationHandler h); static Class getProxyClass(ClassLoader loader,Class[] interfaces); static Object newProxyInstance(ClassLoader loader,Class[]interfaces,InvocationHandler h); 动态代理其实是在运行时生成class,所以,我们必须提供一组interface,然后告诉他 class已经实现了这些interface,而且在生成Proxy的时候,必须给他提供一个handler ,让他来接管实际的工作。
3、通过Class类取得类信息
• • • • • • • • • • • • • 取得类所在的包 public Package getPackage() //得到一个类所在的包 public String getName() //得到名字 取得一个类中的全部方法 public Method[] getMethods() public int getModifiers() //Modifier.toString(mod); // 还原修饰符 public Class<?> getReturnType() public Class<?>[] getParameterTypes() public Class<?>[] getExceptionTypes() public static String toString(int mod) 取得一个类中的全部属性 public Field[] getFields() public Field[] getDeclaredFields() public Class<?> getType() public int getModifiers() public String getName()

JAVA基础(一)-----环境变量设置及java语法

JAVA基础(⼀)-----环境变量设置及java语法⼀:java环境变量:1,JDK:Java Development Kit:java的开发和运⾏环境,java的开发⼯具和jre。

2,JRE:Java Runtime Environment:java程序的运⾏环境,java运⾏的所需的类库+JVM(java虚拟机)。

3,配置环境变量:让java jdk\bin⽬录下的⼯具,可以在任意⽬录下运⾏,原因是,将该⼯具所在⽬录告诉了系统,当使⽤该⼯具时,由系统帮我们去找指定的⽬录。

环境变量的配置:永久配置⽅式:特点:系统默认先去当前路径下找要执⾏的程序,如果没有,再去path中设置的路径下找。

classpath的配置:注意:在定义classpath环境变量时,需要注意的情况如果没有定义环境变量classpath,java启动jvm后,会在当前⽬录下查找要运⾏的类⽂件;如果指定了classpath,那么会在指定的⽬录下查找要运⾏的类⽂件。

⼆:java语法基础:数据类型1、整数类型长整型:后缀L或l⼆进制:前缀0B或0b⼗六进制:前缀0x或0X可以为数字字⾯量加下划线:1_000_000,java编译器会去除这些下划线2、浮点类型float类型:后缀F或fdouble:没有后缀F默认double类型。

当然也可以加后缀D或d表⽰溢出和出错的三个特殊浮点字符:1.正⽆穷⼤ 2.负⽆穷⼤ 3.NaN(表⽰⼀个数字)(2.0-1.1)打印出0.899999999999999999,⽽不是0.9。

原因是浮点数采⽤⼆进制系统表⽰,⼆进制⽆法表⽰分数1/103、boolean类型整型值和布尔值之间不能相互转换三:java语法基础:运算符当参与 / 运算的两个操作数都是整数时,表⽰整数除法;否则表⽰浮点除法。

15/2=7, 15%2=1, 15.0/2=7.5。

整数被0除将会产⽣⼀个异常,浮点数被0除将会得到⽆穷⼤或NaN。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程大纲1、变量2、八种基本数据类型3、基本数据类型的声明进制与转换4、进制与转换5、标识符6、基本数据类型转换7、关键字8、转义字符9、运算符与优先级运算符与优先级10、分支语句11、循环语句12、数组13、算法变量1、变量数学名词:变数或变量,是指没有固定的值,可以改变的数。

变量以非数字的符号来表达,一般用拉丁字母。

变量是常数的相反。

变量的用处在于能一般化描述指令的方式。

计算机解释:计算机解释变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。

根据所存储的数据类型的不同,有各种不同类型的变量。

变量名代表这块内存中的数据。

变量分类:按所属的数据类型划分:基本数据类型变量引用数据类型变量按被声明的位置划分:局部变量:方法或语句块内部定义的变量成员变量:方法外部、类的内部定义的变量成员变量方法外部类的内部定义的变量八种基本数据类型2、八种基本数据类型字节(Byte)是:计算机文件大小的基本计算单位。

1个字节(Byte) = 8个位(Bit)个位Bit意为“位”或“比特”,是计算机运算的基础;二进制中的一位,是二进制最小信息单位.二进位可以用来表示一个简单的正/负的判断,有两种状态的开关(如电灯开关) .简单换算结果简单换算结果:1个字节(Byte) = 8个位(Bit)2个字节(Byte) = 16个位(Bit)4个字节(Byte) = 32个位(Bit)8个字节(Byte) = 64个位(Bit)说明:在内存计算过程中,字节少的数据运算速度更快;在硬盘存储中,字节少的数据类型也可充分存入更多的数据字节少的数据类型也可充分存入更多的数据。

八种基本数据类型2、八种基本数据类型数据类型占用字节取值范围默认值数据类关键字值范围布尔型boolean1true,false false字节型byte1‐128~127015~15短整型short2‐2 2‐10整型int4‐231~ 231‐10长整型long8‐263~ 263‐10h‘\’字符型char20 ~ 216‐1‘\u0000’单精度浮点型float41.4013E‐45 ~3.4028E+380.0F双精度浮点型double84.9E‐324 ~1.7977E+3080.0D3、基本数据类型的声明基本数据类型的声明声明变量的格式:(1)声明变量类型变量名;(2)声明的同时给变量赋值类型变量名=值;(3)给已声明过的变量赋值变量名=值;4、进制与转换进制与转换计算机进制通常有:十进制、二进制、八进制、十六进制十进制:人类算数采用十进制,可能跟人类有十根手指有关。

亚里士多德称人类普遍使用十进制,只不过是绝大多数人生来就有10根手指这样一个解剖学事实的结果。

根手指这样个解剖学事实的结果10、150、1050…4、进制与转换进制与转换二进制:计算机中的数据都以二进制数字保存。

二进制:逢二进一。

即只有0、1两个值。

如:十进制的10在计算机内保存为二进制的1010计算机中信息的存储单位位(Bit):表示一个二进制数码0或1,是计算机存储处理信息的最基本的单位。

字节(Byte):一个字节由8个位组成。

它表示作为一个完整处理单位的8个二进制数码。

进制与转换4、进制与转换八进制:基数为八。

Java中八进制数据要以0开头。

如:0123八进制转换成二进制:只需将每个八进制数字替换为相对应的三个二进制位即可。

现在的计算机系统很少用八进制的了。

二进制八进制00000011010201131004101511061117进制与转换4、进制与转换十六进制:二进制表示法太冗长,所以在程序中一般喜欢用十六进制十六进制:基数为十六,逢十六进一。

它用abcdef表示从0‐9之上的值Java中十六进制数据要以0x或0X开头。

如:0x23D十六进制转换成二进制只需将每个十六进制数字替换为相对应的四个二进制位即可二进制十六进制二进制十六进制0000 0 1001 90001 1 1010 A0010 2 1011 B00000011 3 1100 C0100 4 1101 D0101 5 1110 E0110 6 1111 F0111 71000 8进制与转换4、进制与转换补码:事实上,计算机内的二进制数值是以补码形式表示的。

事实上计算机内的进制数值是以补码形式表示的补码:一个正数的补码和其原码的形式是相同的。

负数的补码是:将该数的绝对值的二进制形式,按位取反再加1。

由此可知,二进制补码数值的最高位(最左位)是符号位:该位为0,表示数值为正数;该位为1,表示数值为负数。

由此可知二进制补码数值的最高位表示数值为正数;该位为表示数值为负数十进制二进制1000000000 00000000 00000000 00001010‐1011111111 11111111 11111111 11110110主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。

另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

进制与转换4、进制与转换二进制数转换成十进制数:按权相加:把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。

例:原码1011.01 = 1×23+0×22+1×21+1×20+0×2‐1+1×2‐2= 8+0+2+1+0+0.25=11.25十进制转换成二进制""整数部分:除2取余,逆序排列法小数部分:"乘2取整,顺序排列"法2 892 44 (1)0.625 X 2 2 22 02 11 02 5 (1)2 2 (1)1.25 X 2 0.5 X 2 2 1 00 (1)89 1011001 1.0 0.625 0.101标识符5、标识符Java对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。

Java标识符命名规则:由字母、数字、下划线(_)和美元符号($)组成。

不能以数字开头。

区分大小。

长度无限制。

不能是Java中的保留关键字。

标符命名惯名知意标识符命名习惯:见名知意。

合法标识符:vince、daoguo、user_name、_userName、$abc_123$非法标识符:2UserName、user#Name、Hello 威哥、class2U N#N H ll威哥l基本数据类型转换6、基本数据类型转换自动类型转换:容量小的类型自动转换成容量大的数据类型byte,short,int‐> float ‐>long ‐>doublebyte,short,int不会互相转换,它们三者在计算时会转换成int类型强制类型转换:容量大的类型转换成容量小的数据类型时,要加上强制转换符long n = 100L;int i= (int)n;有可能造成精度降低或数据溢出,使用时要小心。

boolean类型不能转换成任何其它数据类型。

关键字7、关键字abstract break byte assert boolean case catch char class const continue default do double else d fi l fi ll fl enum extends final finally float for goto if implements import instanceof int interface long native 保留字没有定义用途但保留备用new package private protected public return strictfp short static super 保留字:没有定义用途,但保留备用。

goto 、const switch synchronized this throw throws transient try void volatile while8、转义字符转义字符\n换行(LF) ,将当前位置移到下一行开头\r回车(CR) ,将当前位置移到本行开头\t水平制表(HT) (跳到下一个TAB位置)\\代表一个反斜线字符''\'\'代表一个单引号(撇号)字符\代表个双引号字符\"代表一个双引号字符运算符与优先级9、运算符与优先级算术运算符:运算符描述示例结果+加法5+510‐减法5‐32*乘法2*36/除法10/33%取余(取模)10%31++自增(前,后)自减(前后)++:如果是前缀:先对此变量加1,再执行其他的操作如果是后缀先执行其他的操作再对此变量加‐‐自减(前,后)如果是后缀:先执行其他的操作,再对此变量加1‐‐:同理键盘输入:Scanner input=new Scanner(System.in);运算符与优先级9、运算符与优先级赋值运算符:作用是将一个值赋给一个变量,运算顺序从右到左运算符描述示例结果=赋值a=10a=10+=加等于a=1,a+=3a=4‐=a=1,a ‐=3a=‐2减等于,*=乘等于a=1,a*=3a=3/=除等于a=10,a/=3a=3%10%31%=模等于a=10,a%=3a=1运算符与优先级9、运算符与优先级关系运算符:作用是比较两边的操作数,结果总是boolean 型的。

运算符描述示例结果==相等于a=1,a==10false !=不等于a=1,a!=3true <a=1,a<3true 小于,>大于a=1,a>3false <=小于等于a=10,a<=3false>10>3t >=大于等于a=10,a>=3true运算符与优先级9、运算符与优先级逻辑运算符:用于对boolean 型结果的表达式进行运算,运算结果总是boolean 型,后面结合条件结构讲解。

运算符描述示例结果f l f l &与false & true false |或false & true true ^异或true ^ false true !非! true false &&短路与false && true false 在计算机中,非0即真,0为假逻辑或:或1则1逻辑与全||短路或false || true true逻辑与:全1才1运算符与优先级9、运算符与优先级位运算符:对两个操作数中的每一个二进制位都进行运算位运算符功能:1、按位取反~2、按位与&3、按位或|4、按位异或^9、运算符与优先级运算符与优先级位移运算符:左移:"a<<b; "将二进制形式的a逐位左移b位,最低位空出的b位补0带符号右移:"a>>b; "将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位无符号右移:"a>>>b;"将二进制形式的a逐位右移b位,最高位空出的b位补09、运算符与优先级运算符与优先级位移运算符正数示例:10000000000 00000000 00000000 01100100100<<300000000 00000000 00000011 00100000 100>>300000000 00000000 00001100 100300000000100>>>300000000 00000000 00000000 000011009、运算符与优先级运算符与优先级位移运算符负数示例:‐10011111111 11111111 11111111 10011100‐100<<311111111 11111111 11111100 11100000‐100>>311111111 11111111 11110011 100311111111‐100>>>300011111 11111111 11111111 111100119、运算符与优先级运算符与优先级三目运算符:X ? Y : ZX为boolean类型表达式,先计算x的值,若为true,整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。

相关文档
最新文档