什么是Java编程
语言Java编程语言:应用场景:非windows平台下互联网环境的开发首选JDK JRE JVMJDK是Java开发工具箱,包括了JREJRE是Java运行时环境,不包括开发工具JVM是Java虚拟机,执行class文件开发环境的准备JDK安装: JDK1.8Eclipse:IDE工具常见的开发工具:javac编译器 Hello.java—>Hello.classjava解释器 代码的解释执行javadoc文档生成器 在java源程序中通过@…添加文档注释,然后再生成html格式的文档,用于团队的合作开发编程: 程序=算法+数据结构Java是一种面向对象的编程语言,所以开发程序的开始就是定义类的开始Java是一种编译执行或者解释执行的编程语言,先编写源程序,然后进行编译形成字节码文件(.class),最后使用解释器解释执行class文件具备扩平台性,原因是针对不同的平台有对应的解释器public class Hello{ // public class用于定义公共类,要求类名称和存放源代码的文件名称必须一致,包括大小写。例如存放文件的名称为hello.java,则编译出错public static void main(String[] args){ //main方法是程序的执行起始点,一个类中可以定义多个方法,但是main是所有方法开始执行的位置,这个方法的签名不允许进行修改。如果方法名称写错,将不能执行,编译通过。 System.out.println(“Hello Java”); //这条语句用于在控制台上直接输出显示双引号中的内容。注意:这里的标点符号都是英文符号。语句末尾使用分号表示结尾}}编写完成后,首先进行编译,将.java文件转化为二进制的class文件javac Hello.java生成.class的二进制文件后,则可以通过解释器解释执行java Hello 注意:这里是类名称,不是文件名称如果使用IDE工具则不需要手工的编译等操作,而且一般的IDE工具可以进行语法检查,如果发现语法错误则会采用红色的叉进行提示,要求编程人员进行修改Java代码中的注释:从软件工程的角度上说,一个源程序中20%-30%的编码量为注释是合理的;如果不写注释是不建议Java语法中提供了3种注释:注释是供程序员阅读的,用于对代码进行说明,从而避免需要了解方法的功能时,还需要进行代码阅读的限制,偶尔用于开发中,阻止一段代码的执行。注释在代码编译时会自动被编译器所忽略// 单行注释/* 多行注释 //* 文档注释 / 可以通过javadoc命令生成html文档Java语言的源程序代码由一个或多个编译单元组成,每个编译单元可包含三个要素:1、一个包声明(可选)。 package com.yan; 命名空间2、任意数量引入语句。 import java.util.; java简单易学的原因是别人给提供的支持3、类的声明和接口声明 public class A{}该三要素必须以上述顺序出现。也就是说任何引入语句出现在所有类定义之前;如果使用包声明,则包声明必须出现在类和引入语句之前。每个Java的编译单元可包含多个类或接口,但是每个编译单元最多只能有一个类或者接口是公共的一个公共的类存放在同名称的文件中,一个文件可以存放多个类定义,但是只能有一个和文件名称相同的public classJava是一种自由格式的语言,可以用任意个空格、制表符、换行符隔开每个词同时也允许将多行代码写在一行上,注意使用分号隔开;所有的语句末尾以分号;收尾一般建议使用通用习惯的格式存放文件。先随便格式进行定义,然后使用【ctrl+shift+F】快捷键对代码进行格式化处理常见的编程错误: 目前的要求:将所有的程序都必须写在方法内部,不能写在方法外 (目前要求)使用临时变量,Java 要求必须是先定义后使用,必须是先赋初值后使用Java 标识符: ---- 一定要遵守最基本的编程规范,目前讲解的规范按照SUN并参考ali的规范进行定义,入职后记得就近原则给编程中的要素进行命名的规则,赋予变量、类或方法的名称。变量、函数、类和对象的名称都是标识符,程序员需要标识和使用的东西都需要标识符标识符可从一个字母(Unicode编码字符集)、下划线_或美元符号$开始,随后也可跟数字、字母、下划线或美元符号报错原因是数字开发命名方式合法,因为这里的字母采用的是Unicode编码字符集中的字母,全世界范围内的语言都基本提供支持标识符是区分大小写,没有长度限制,可以为标识符取任意长度的名字报错的原因是因为在Java中区分名称采用的是区分大小写的方式,这里k和K系统识别为两个不同的东西有效的标识符 identifier thisoneUserName User_name_system_varl m a x 这 里 需 要 注 意 的 是 一 般 不 建 议 使 用 或 者 max 这里需要注意的是一般不建议使用_或者 max这里需要注意的是一般不建议使用或者开头,但是从语法的角度上说,这是允许有关关键字值得我们注意的地方:不允许使用关键字或者保留字 关键字就是在语法中具备特殊含义的单词;保留字就是没有在语法中定义特殊含义,但是不允许用户使用的单词 true、false和null为小写,而不是象在C++语言中那样为大写。严格地讲,它们不是关键字,而是文字。然而,这种区别是理论上的 goto和const不是Java编程语言中使用的关键字,但是这两个单词属于保留字非法的变量名 3max (变量名不能以数字开头) room# (包含非法字符“#”) class (“class”为保留字) user name (报错,因为标识符中不能出现空格)变量----在内存中具体存储位置的名称变量是Java程序中的基本存储单元,它的定义包括变量名、变量类型和作用域三个部分Java是一种强类型编程语言,也就是说定义变量时必须指定对应的数据类型数据类型指明变量或表达式的状态和行为,数据类型决定了数的取值范围和运算符号作用域决定了变量名称的有效范围,Java要求变量必须先声明后使用JAVA是强类型语言每个变量有类型,每个表达式有类型,而且每种类型都是严格定义的。而且一旦定义则类型不能修改Java编译器对所有的表达式和参数都要进行类型相容性的检查,以保证类型是兼容的例如:在c语言中可以将整数赋值给boolean类型,但是在java中boolean类型和数值类型没有任何关系任何类型的不匹配都将被报告为错误而不是警告。在编译器完成编译以前,错误必须被改正过来典型问题代码:问题1: 方法名称不够规范,按照一般的规则,方法名称首字母应该小写,这不是语法的强制规则,是一种规范问题2:一个=是用于赋值,表示将=右边的数据计算出来,并存放在左边的变量中。如果需要判断两个数据是否相等,应该使用==两个等号,不是一个问题3:if() return 这种写法可读性不强,一般不建议这种写法。这是一个建议规范,不是强制规则问题4:这里的编译工具分析代码发现当所有的条件都不成立时,没有返回值,所以仍旧报错方法2:在Java语言数据类型可以分为两大类:基本类型和引用类型基本类型是指不能再分解的数据类型,其数据在函数的调用中是以传值方式工作的简单数据类型代表单值,而不是复杂的对象Java是完全面向对象的,但简单数据类型却不是,它们类似于其他大多数非面向对象语言中的简单数据类型。这样做的原因是出于效率方面的考虑。在面向对象中引入简单数据类型不会对执行效率产生太多的影响Java编程语言有八个原始数据类型,可分为4种整型、浮点数、字符型数据和布尔型数据,不会随着计算机类型而变化的 Java是针对于VM进行编程,不是针对特定的物理设备,所以不会因为32位系统还是64位系统而有所区别 Java开放源代码,但是VM不开发源代码,采用的是C实现,针对不同的物理设备需要安装对应的VM对于临时变量必须先定义后使用,必须先赋初值后使用数据类型名 变量名【=初值】; 1B=8bit 【B字节 b位】整数类型整数类 byte,short,int,long 补码存储 byte字节整数 1B -128到127出错的原因是超出允许存储的范围 short短整型 2B -32768到32767 int 整型 4B -2147483648到2147483647 long 长整型 8B -9223372036854775808到9223372036854775807所有Java编程语言中的整数类型都是带符号的数字,不存在无符号整数。整数类型的文字可使用二进制、十进制、八进制和十六进制4种表示方式。 二进制整数,以0b或者0B开头,例如0b1001001十进制整数。如123,-456,0 八进制整数。以0开头,如0123表示十进制数83,-011表示十进制数-9。十六进制整数。以0x或0X开头,如0x123表示十进制数291,-0X12表示十进制数-18整数类缺省为int类型,如在其后有一个字母L表示一个long值 long k=123456789012345678L; 实际上末尾的L或者l都可以,但是一般不建议使用l浮点数类型两种浮点类型float和double 浮点数无法准确存放,所以浮点数不能进行等值判断 float 4B 单精度浮点数 7-8有效数据 E38 double 8B 双精度浮点数 15-16有效数据 e308解决方法是:在123.456后添加f或者F,表示是单精度浮点数或者double dd=123.456; 系统默认浮点数是double类型如果一个数包括小数点或指数部分或者在数字后带有字母F或f(float)、D或d(double),则该数为浮点数表示浮点数有2种计法: 十进制数形式。由数字和小数点组成,且必须有小数点,如0.123, 1.23, 123.0 科学计数法形式。如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。例如12.3e-5含义是12.3X10-5问题:解决方法是:将两个值进行相减并求绝对值,如果绝对值小于某个值,则认为相等字符类型 char使用char类型可表示单个字符,字符是用单引号括起来的一个字符【强调:不能使用双引号,使用双引号就是字符串类型】, 这个字符可以是unicode编码字符集中的任意字符 Java中的字符型数据是16位(2B)无符号型数据,它表示Unicode集,而不仅仅是ASCII集。其范围为0~65535 Unicode所定义的国际化字符集能表示迄今为止人类语言的所有字符集,它要求使用16位的宽度表示。没有负数的char Unicode字符的使用对于英语、德语、西班牙语或法语的语言是有些低效,因为这些语言能够被包含在8位内。但是为了程序的的可移植性和通用性,付出代价是很有必要的 计算机处理字符类型时,是把这些字符当成不同的整数来看待。因此。严格说,字符类型也算是整数类型的一种 数字(48-57)<大写英文字母(65)<小写英文字母(97) 数据类型转换Java也提供转义字符,以反斜杠\开头,将其后的字符转变为另外的含义 \ddd 1到3位8进制数所表示的字符(ddd) \uxxxx 1到4位16进制数所表示的字符(0123456789abcdef) \’ 单引号字符 " 双引号字符 \ 反斜杠字符注意:用双引号引用的文字,就是平时所说的字符串类型不是原始类型,而是一个类(class)String,它被用来表示字符序列 字符本身符合Unicode标准,且上述char类型的转义字符适用于String 可以把char当作整数数据来操作 int three=3; char one=’1’; char four=(char)(three+one); //four=’4’ three+one=? 逻辑类型 boolean boolean数据类型有两种文字值:true真 和false假在Java编程语言中boolean类型只允许使用boolean值,在整数类型和boolean类型之间无转换计算基本数据类型转换数据类型按精度(取值范围)从低到高排列顺序为:byte,short,char,int,long,float,double。 当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型转换当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。显示转换格式为: (目标类型名)要转换的值;报错的原因是double大于int,解决方法为强制类型转换 需要注意:在大转小的转换过程中可能损失精度 (byte)255 == -1 (byte)0x5634 == 0x34 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入 (int)23.7 == 23 (int)-45.89f == -45作业:熟悉Java中的基本类型,明天考核复合数据类型—抽象数据类型,用户自定义的数据类型复合数据类型包括:class类、interface接口、数组。null 索引在运行时并没有对应的类型,但它可以被转换为任何类型(不能是简单类型)。索引类型的默认值就是null强调:赋值时接收数据的变量和给的值必须类型一致,否则编译报错常量 final常量就是指在程序执行期间其值不能发生变化的数据【一旦赋值则值不变】,常量是固定的。如整型常量123,实型常量1.23,字符常量’A’,布尔常量true等所有的字面量都是常量123、true表达式表达式就是运算符、操作数以及方法调用的序列,用来说明某个计算过程并返回计算结果按照运算符功能来分,基本的运算符分包括算术运算符、关系运算符、位运算符、条件运算符等算术运算符 +加(正值)、-减(负数)、乘、/除、%求余、++自加、–自减++和–实际上k++等价于k=k+1,另外还有写法++k区别:特殊点:5/2=?比较运算符>大于、<小于、>=大于等于、<=小于等于、==等于、!=不等于计算结果为boolean类型的数据,表示条件是否成功逻辑运算符 &&与、 ||或、 !非小环是女的并且年龄大于20 && 条件1:小环是女的 条件2:年龄大于20&&总结: 同真则真,其余为假|| 小环是女的或者年龄大于20总结:同假则假,其余为真!非 非(小环是女的) == 小环不是女的总结:非真则假 非假则真这里的运算符支持短路计算,在特定的条件判断中实际上是不执行第二条件的判断可以得出计算结果如果是&&计算,当条件1为false时计算结果一定是false,第二个条件式没有必要执行如果是||计算,当条件1为true时计算结果一定是true,第二个条件式没有必要执行[笔试]笔试中经常采用的方法是将自加、自减计算和短路计算混在一起,让大家评估最终的计算结果位运算符 【不做要求】&与、|或、^异或、~取反、<<右移位计算 、 >>左移位计算、>>>无符号移位计算28最快速的计算方法2<<3考试:赋值运算符 =,+=,―=,*=,/=,%=K=5表示将5这个值或者这个位置上表达式计算结果赋给变量K中进行存储a+=5表示的意思是a=a+5的简化写法,另外-= *= /= %=含义类似考点:为什么报错?因为1默认是int类型,所以计算时k会自动转换为int类型进行计算,计算结果101为int类型,将大类型赋值给short小类型,必须进行强制类型转换修改方法:语法报错的原因:是因为进行计算时,系统会自动默认将k和k2转换为int类型进行计算,所以这里的返回值还是int如果更改写法为什么不报错了?三目条件运算符(?:)规则是完全一致的,使用的形式是: x ? y:z;X是一个条件表达式,如果结果为真,则返回表达式y的计算结果,否则返回表达式z的计算结果其他运算符对象运算符instanceof 用来判断一个对象是否是某一个类或者其子类的实例。如果对象是该类或者其子类的实例,返回ture;否则返回false判断k是否为Integer类型,如果是则返回为true,否则为false .运算符 用于访问对象实例或者类的类成员函数 new运算符 用于创建一个新的对象或者新的数组运算符优先级结构化编程结构化程式设计(英语:Structured programming)是 1960 年代开始发展起来的一种编程典范。它采用子程序、 程式码区块、for 循环以及 while 循环等结构来取代传统的 goto。希望借此来改善计算机程序的明晰性、品质以 及开发时间,并且避免写出面条式代码。已经证明,任何复杂的问题都可以三种基本算法结构来描述:顺序、选择、循环。因此用计算机语句描述的程序也包含三种基本结构设计方法:使用流程图表示算法1、圆角矩形表示“开始”与“结束”。 2、矩形表示行动方案、普通工作环节用 3、菱形表示问题判断或判定(审核/审批/评审)环节 4、用平行四边形表示输入输出 5、箭头代表工作流方向结构化程序设计原则自顶向下、逐步求精、模块化。典型案例:把大象装到冰箱中结构化程序设计还有一个重要的规定,那就是只能使用顺序结构、选择结构、循环结构这三种基本结构(或由它们派生出来的结构)来定义程序的流程顺序结构:就是按照语句的编写顺序逐条执行选择结构: if/else switch/case需求:有个学生性别的boolean类型变量,如果false则显示女的啊! 需求:有个学生成绩(假设成绩都是整数),如果>60显示及格,否则显示不及格需求:有个学生成绩(假设成绩都是整数),如果>85显示优秀,如果>70显示良好,如果>60显示及格, 否则显示不及格最后还需要了解允许if进行嵌套开关分支语句switch (表达式) { 这个表达式应该可以计算出一个具体的结果值 case 值1: 当结果值为值1的时候,执行【操作 1 的语句】,执行完成后的break表示跳出switch,如果没有break语句,则继续向下执行,但是不再进行判定 操作 1 的语句; break; case 值2: 操作 2 的语句; break; …. case 值n : 操作 n 的语句; break; default: 默认语句; }需求:有个学生成绩(学生成绩应该是100制),如果>=80显示优秀,如果>=60显示及格,否则显示不及格换成开关分支语句的写法:Switch条件表达式返回的数据类型:int/short/byte、char、String类型或者Enum枚举类型报错的原因是switch中不能使用long类型总结:if可以用于各种条件判断执行情况下,但是switch只能用于等值判断,所以要求switch中的表达式计算结果必须是有限个离散点,否则不能使用switch