课工厂陈璇老师课程笔记 第1课:初识Java语言
- 格式:docx
- 大小:62.21 KB
- 文档页数:7
Java基础知识点归纳Java基础学问点归纳对于刚刚接触Java的人,java基础学问技术点繁多,那么yjbys我为大家汇总最全java学问点如下,仅供大家参考学习!1. JVM相关(包括了各个版本的特性)对于刚刚接触Java的人来说,JVM相关的学问不愿定需要理解很深,对此里面的概念有一些简洁的了解即可。
不过对于一个有着3年以上Java阅历的资深开发者来说,不会JVM几乎是不行接受的。
JVM作为java运行的基础,很难信任对于JVM一点都不了解的人可以把java 语言吃得很透。
我在面试有超过3年Java阅历的开发者的时候,JVM几乎就是一个必问的问题了。
当然JVM不是唯一确定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。
在JVM这个大类中,我认为需要把握的学问有:JVM内存模型和结构GC原理,性能调优调优:Thread Dump,分析内存结构class 二进制字节码结构,class loader 体系,class加载过程,实例创建过程方法执行过程:Java各个大版本更新提供的新特性(需要简洁了解)2. Java的运行(基础必备)这条可能出看很简洁,java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。
这个学问点是最最基本的java开发者需要把握的,初学java,第一个确定是教你如何在指令行中执行java程序,但是很多人一旦把java学完了,IDE用上了,就把这个都忘了。
为什么强调要知道这个呢,知道了java最纯粹的启动方式之后,你才能在启动出问题的时候,去分析当时启动的名目多少,执行命名如何,参数如何,是否有缺失等。
这样有利于你真正开发中去解决那些奇诧异怪的可能和环境相关的问题。
在这里需要把握的学问有:javac 编译java文件为class 文件java 指令的使用,带package的java类如何在指令行中启动java程序涉及到的各个路径(classpath,java。
Java-课堂笔记-第一章至第八章知识点梳理1.控制台程序开发1.1 开发Java程序的步骤(1)编写源程序:Java源程序文件后缀名.java(2)编译源程序:使用javac命令编译源程序,编译之后的文件后缀名.class (3)运行使用java命令运行编译之后的.class文件1.2 程序开发环境记事本、Eclipse或MyEclipse1.3 控制台输入/输出(1)从控制台输入信息使用Scanner对象第一步:创建一个Scanner扫描器对象Scanner input = new Scanner(System.in);第二步:导入Scanner包import java.util.Scanner;第三步:获取从控制台输入的整数int num = input.nextInt();获取从控制台输入的小数double num = input.nextDouble();获取从控制台输入的字符char ziFu = input.next().charAt(0);获取从控制台输入的字符串String str = input.next();(2)从控制台输出信息使用System.out.print();System.out.println();转义字符:\n:换行\t:一个制表符(8个空格)1.4 程序注释Java中的注释有3种:(1)单行注释://这里是注释内容(2)多行注释:/*这里是注释内容*/(3)文档注释:/**这里是注释内容*/1.5 程序调试2.变量和运算符2.1 变量变量:变量就是变化的量,是数据存储空间的表示,即数据在内存空间地址的别名(1)变量的声明语法:数据类型变量名;举例:int score;//声明一个int类型的变量score,保存成绩(2)变量的赋值(初始化)基本数据类型的赋值使用“=”赋值语法:变量名 = 值;举例:score = 98;引用数据类型使用new关键字语法:数据类型变量名 = new 数据类型();举例:Scanner input = new Scanner(System.in);2.2 常量2.3 运算符(1)赋值运算符:=、+=、-=、*=、/=、%=举例:sum += i;//相当于sum = sum + i;(2)算术运算符:+、-、*、/、%(3)关系运算符:>、<、>=、<=、==、!=(4)逻辑运算符:&&、||、!(5)自增运算符:i++或++ii++ 相当于 i = i + 1;(6)自减运算符:i--或--ii-- 相当于 i = i - 1;(7)三目运算符:?:3.数据类型与数组3.1 数据类型(1)基本数据类型整型:byte、short、int、long浮点型:float、double字符型:char布尔型:boolean(2)引用数据类型String、数组、类(class)、接口(3)数据类型转换自动数据类型转换自动数据类型转换的条件1.目标类型和源类型数据类型要兼容,数值类型(整型和浮点型)相互兼容2.目标类型要大于源类型,double型可以存放int型数据,因为double型变量分配的空间宽度足够存储int型变量强制数据类型转换语法:(数据类型)表达式;3.2 数组(1)数组的基本用法数组声明语法:数据类型[] 数组名;或数据类型数组名[];数组分配空间语法:数组名 = new 数据类型[数组长度];数组赋值静态赋值:给数组元素单个赋值如:scores[0] = 98;scores[1] = 87;动态赋值:使用for循环动态给数组元素赋值如:for(int i=0;i<scores.length;i++){ //每次循环把输入的数值赋值给数组元素scores[i] = input.nextDouble();}直接创建数组:方式一:数据类型[] 数组名={值1,值2,值3,....};方式二:数据类型[] 数组名=new 数据类型[]{值1,值2,值3,..};访问数组元素:语法:数组名[下标值];获取数组长度:语法:数组名.length;(2)数组应用数组排序:1.import java.util.Arrays;//导入Arrays工具包2.Arrays.sort(数组名);求最大值:(见第七章数组课堂笔记)求最小值:(见第七章数组课堂笔记)4.流程控制语句4.1 分支结构(选择结构)(1)if选择结构if(判断条件){执行语句;}(2)if-else选择结构if(判断条件){执行语句1;}else{执行语句2;}(3)多重if选择结构if(判断条件1){执行语句1;}else if(判断条件2){执行语句2;}else if(判断条件3){执行语句3;}else{执行语句4;}(4)嵌套if选择结构if(判断条件1){if(判断条件2){执行语句1;}else{执行语句2;}}else{执行语句3;}(5)switch选择结构switch(表达式){case 常量1:代码块1;break;case 常量2:代码块2;break;case 常量3:代码块3;break;.......default:代码块n;break;}4.2 循环结构(1)while循环while(循环条件){循环操作;}特点:先判断,后执行(2)do-while循环do{循环操作;}while(循环条件);特点:先执行,后判断(3)for循环for(循环初始变量;循环条件;循环变量的更新){循环操作;}循环次数固定的时候,优先选用for循环while、do-while、for三种循环的对比,需要重点看下4.3 跳转语句(1)break用在switch选择结构中,表示跳出switch选择结构用在循环结构中,表示跳出整个循环或结束整个循环用在二重循环结构中,表示结束内层循环,继续执行外层循环(2)continuecontinue只能用在循环结构中,表示结束本次循环,进入下一次循环用在二重循环结构中,表示结束内层循环的本次循环,进入下一次循环(3)return。
JA V A第一至第七章总结第一章初识JA V A什么是程序:程序可以看作对一系列动作执行过程的描述。
计算机程序,所下达的内一个命令成为指令,他对应着计算机执行的一个基本动作,告诉计算机按照某种顺序完成一系列指令,这一系列指令的集合成为程序。
解释:程序:为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。
人类与计算及沟通需要计算机语言。
计算机语言有很多种,它们都有自己的语言法则,你可以选用其中一种描述,传达给计算机。
例如,用JA V A语言描述的程序称为JA V A程序。
计算机阅读该程序,也就是阅读指令集,然后按部就班地严格执行。
通常来讲,编制程序时选用的语言是那种有利于人类读写的语言,俗称高级语言。
但是计算机仅仅明白0和1代码组成低级语言(即二进制形式的机器语言程序),中间需要一个翻译官进行语言转换。
不用担心,开发高级语言的工程师们已经为我们准备好了翻译官,我们学好高级语言就可以了。
JA V A的来历:JA V A是前Sun公司(Sun Micros)于1995年推出的高级编程语言,别看看它只有十几岁,它的本事可多着呢!JA V A技术可以应用在几乎所有类型和规模的设备上,小到计算机芯片、蜂窝电话,大到超级计算机,无所不在。
资料:JA V A的初期开发早在1991年就开始了。
当时,在Sun公司内,有一个成为Green 的项目,在James Gosling的带领下,这个项目的工程师受命设计一种小型的计算机语言,用于机顶盒、家电控制芯片等消费类设备。
最初,这种新语言被命名为“Oak”(James Gosling办公室窗外的橡树名),但后来由于“Oak”这一名字已被占用,所以改名为“JA V A”。
据说这是因为当时人们在想新名字的时候,正在品尝着一种来自印度尼西亚的爪哇小岛盛产的咖啡(这种咖啡也叫做JA V A),于是就选用了“JA V A”——一种咖啡的名字作为新语言的名字,所以JA V A语言的标志就是一杯热气腾腾的咖啡!也许,Sun公司希望JA V A语言能够像咖啡一样被人们接受、喜爱吧!JA V A语言的创始人也被人们誉为“JA V A语言之父”。
Java语言程序设计基础教程课件(第1章)Java的优越性与c比较勤学相对目前市场需求量大可移植性好安全性高多线程纯的面向对象语言Java与net相较开源社区开发工具免费Eclipse 信息与计算科学专业的学生推荐书籍Java2核心技术第七版Thinking in Java 第一章Java 程序设计概述11 机器语言汇编语言和高级语言12 Java 语言概述13 Java平台和主要应用方向14 Java的垃圾回收与代码安全检查机制15 典型的Java开发环境16 Java编程示例17 反编译工具的介绍18 Java JDK 6 新功能介绍11机器语言汇编语言和高级语言计算机程序设计语言的种类非常多总的可以分成机器语言汇编语言高级语言三大类机器语言是计算机唯一能接受和执行的语言与硬件紧密相连机器语言由二进制码组成每个二进制码是一条指令一条指令通常由两个部分组成操作码操作数操作码规定了计算机要执行的基本操作操作数规定了操作对象或操作对象的地址汇编语言Assembly Language是面向机器的程序设计语言用汇编语言编写的程序叫汇编语言源程序计算机无法执行必须用汇编程序把它翻译成机器语言目标程序计算机才能执行这个翻译过程称为汇编过程汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序汇编语言中用助记符代替操作码用地址符号Symbol或标号Label代替地址码这样用符号代替机器语言的二进制码就把机器语言变成了汇编语言因此汇编语言亦称为符号语言机器语言和汇编语言都是面向机器的高级语言是面向用户的由于汇编语言依赖于硬件体系且助记符量大难记于是人们又发明了更加易用的所谓高级语言高级语言中的语法和结构更类似普通英文且由于远离对硬件的直接操作使得一般人经过学习之后都可以编程用高级语言编写的程序叫做高级语言源程序必须翻译成机器语言目标程序才能被计算机执行高级语言的翻译有两种方式编译方式和解释方式编译方式先由编译程序把高级语言源程序翻译成目标程序执行时运行目标程序现在大多数的编程语言都是编译型的例如Visual CVisual FoxproDelphi等解释方式在运行高级语言源程序时由解释程序对源程序边翻译边执行经典的Basic语言就是以解释方式运行的12 Java 概述Java语言的产生Java语言的发展Java虚拟机及Java的跨平台原理Java语言的关键特点Java 语言的产生Java是1995年6月由Sun公司引进到我们这个世界的革命性的编程语言1990年Sun公司成立了由James Gosling领导的开发小组开始致力于开发一种可移植的跨平台的语言该语言能生成正确运行于各种操作系统各种CPU芯片上的代码他们的精心专研和努力促成了Java语言的诞生Java语言是一门很优秀的语言具有面向对象与平台无关安全稳定和多线程等优良特性是目前软件设计中极为健壮的编程语言Java语言的出现是源于对独立于平台语言的需要即这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误目前随着网络的迅速发展Java语言的优势越显明显Java已经成为网络时代一门非常重要的语言Java 语言的发展微软公司总裁比尔盖茨先生认为Java语言是长时间以来最卓越的程序设计语言Java语言已经成为目前最流行的网络编程语言到2005年我国对Java技术人员的需求量将高达20万余人许多大学纷纷开设Java课程Java 正逐步成为世界上程序员最多的编程语言Java虚拟机及Java的跨平台原理Java虚拟机Java Virtual Machine 简称JVMJava虚拟机是一个想象中的机器在实际的计算机上通过软件模拟来实现Java 虚拟机有自己想象中的硬件如处理器堆栈寄存器等还具有相应的指令系统Java 语言的一个非常重要的特点就是与平台的无关性而使用Java虚拟机是实现这一特点的关键Java语言的关键特点简单性平台无关性面向对象性安全性分布式多线程动态性13 Java平台和主要应用方向某种意义上来说Java不仅是编程语言还是一个开发平台Java技术给程序员提供了许多工具编译器解释器文档生成器和文件打包工具等同时Java还是一个程序发布平台两种主要的发布环境首先是Java运行时环境java runtime environment简称JRE包含了完整的类文件包其次许多主要的浏览器都提供了Java解释器和运行时环境Java技术的平台架构包括以下三个方面J2SEJava 2 Standard Edition标准版主要目的是为台式机和工作站提供一个开发和运行的平台包括标准的Java 2 SDK工具运行时环境和API用Java程序设计语言编写部署和运行Applet和应用程序的开发人员是桌面开发和低端商务应用的解决方案J2EEJava 2 Enterprise Edition企业版主要目的是为企业计算提供一个应用服务器的运行和开发平台J2EE本身是一个开放的标准任何软件厂商都可以推出自己的符合J2EE标准的产品通过基于标准化模块组件和一整套的相关服务能够自动处理应用程序行为的许多细节从而大大简化了多层企业应用程序的构造和部署IBMOracleBEAHP等29家已经推出了自己的产品其中尤以BEA公司的WebLogic产品和IBM公司的WebSphare最为著名J2MEJava 2 Micro Edition小型版主要是面向消费电子产品为消费电子产品提供一个Java的运行平台使得Java程序能够在手机机顶盒PDA等产品上运行包含高度优化的Java运行时环境致力于电子消费产品和嵌入式设备的解决方案14 Java的垃圾回收与代码安全检查机制在Java程序的执行过程中部分内存在使用过后就处于废弃状态如果不及时进行无用内存的回收内存会越占越多导致内存泄漏进而导致系统崩溃在C++语言中是由程序员人为进行内存回收的程序员需要在编写程序的时候把不再使用的对象内存释放掉但是这种人为的管理内存释放的方法却往往由于程序员的疏忽而致使内存无法回收同时也增加了程序员的工作量在Java运行环境中始终存在着一个系统级的线程专门跟踪内存的使用情况定期检测出不再使用的内存并进行自动回收避免了内存的泄露也减轻了程序员的工作量字节码的执行需要经过三个步骤1首先由类装载器class loader负责把类文件class文件加载到Java虚拟机中在此过程需要检验该类文件是否符合类文件规范2其次字节码校验器byte code verifier检查该类文件的代码中是否存在着某些非法操作例如Applet程序中写本机文件系统的操作3如果字节码校验器检验通过由Java解释器负责把该类文件解释成为机器码进行执行Java虚拟机采用的是沙箱运行模式即把Java程序的代码和数据都限制在一定内存空间里执行不允许程序访问该内存空间外的内存如果是Applet程序还不允许访问客户端机器的文件系统Java致力于检查程序在编译和运行时的错误类型检查帮助检查出许多开发早期出现的错误Java自已操纵内存减少了内存出错的可能性Java还实现了真数组避免了覆盖数据的可能这些功能特征大大提高了开发Java应用程序的周期Java提供Null指针检测数组边界检测异常出口Byte code校验15典型的Java开发环境Sun公司为全世界使用Java进行开发的人员提供了一套免费的开发工具集取名为JDKJava Developers Kits它不仅是Java的开发平台也是Java的运行平台学习Java必须从J2SE开始目前Sun公司已发布了SDK的15测试版本beta版可以登录到Sun公司的网站httpcom免费下载SDK15例如jdk-1_5_0-beta2-windows-i586exe 下载安装和了解JDK 1下载安装JDK的第一步是下载安装文件这里要下载的是Sun公司的J2SE 50 Development Kits下载的网址是httpcomj2secomdownloadjsp 2安装JDK 下载后的JDK安装文件名称是jdk-1_5_0_06- windows-i586-pexe双击这个文件可以开始程序的安装开始的第一步是同意使用条款接着则开始安装JDK 3了解JDK 默认情况下JDK与公用JRE各安装至C\Program Files\Java\com\及C\Program Files\Java\com\ 公用JRE 主要是为开发好的Java程序提供执行的平台其实JDK本身也有自己的JRE这个JRE位于JDK安装目录的jre目录下以上面的安装为例就是在C\Program Files\Java\com\jre中JDK本身所附的JRE主要是开发Java程序时做测试之用与公用JRE的主要差别在于JDK本身所附的JRE比公用JRE多了个server的VMVirtual Machine执行选项JDK的安装目录下有如下内容bin目录提供的是JDK的工具程序包括javacjavajavadocappletviewer等程序demo目录一些使用Java 编写好的范例程序jre目录JDK自己附带的JRE lib目录工具程序实际上会使用的Java工具类例如javac工具程序实际上会去使用toolsjar中的comsuntoolsjavacMain类srczipJava提供的API类的源代码压缩文件如果需要查看API的某些功能是如何实现的可以查看这个文件中的源代码内容JDK安装目录下的bin目录非常重要因为编写完Java程序之后无论是编译或执行程序都会使用到bin目录下所提供的工具程序系统环境ClassPath 值的设置系统环境变量Path 值的设置测试环境变量写一个简单的Java程序测试一下环境设置是否正确例1-1一个简单的Java程序public class HelloWorld public static void main String argv[ ] S ycomtln "你好我的第一个Java程序" 注意1.Java 的源文件必须以扩展名java结束2.Java主文件名与类名称必须一致区分大小写3.Java程序的类名称是指class关键词后的名称就这个例子而言也就是HelloWorld该名称必须与HelloWorldjava的主文件名HelloWorld一致4.注意每个字母的大小写Java程序中会区分字母的大小写System与system对Java程序来说是不一样的名称C\ cd java_work\1 接着使用javac工具程序来编译java文件命令如下C\java_work\1 javac HelloWorldjava 如果编译顺利成功则在HelloWorldjava所在的目录会出现一个HelloWorldclass文件这是已经编译完成的Java字节码文件使用java工具程序来执行它执行方式如下C\java_work\1 java HelloWorld Java工具程序会根据指定的类名称实际加载class的文件以上例来说就是载入HelloWorldclass并执行Eclipse和MyEclipse 1.Eclipse 是什么Eclipse 是一个开放源代码的基于Java的可扩展开发平台就其本身而言它只是一个框架和一组服务用于通过插件组件构建开发环境幸运的是Eclipse 附带了一个标准的插件集包括Java开发工具Java Development ToolsJDT 虽然大多数用户很乐于将Eclipse 当作Java IDE 来使用但Eclipse 的目标不仅限于此Eclipse还包括插件开发环境Plug-in Development EnvironmentPDE这个组件主要针对希望扩展Eclipse的软件开发人员因为它允许构建与Eclipse环境无缝集成的工具由于Eclipse中的每样东西都是插件对于给Eclipse 提供插件以及给用户提供一致和统一的集成开发环境而言所有工具开发人员都具有同等的发挥场所2.MyEclipse 是什么简单而言MyEclipse是Eclipse的插件也是一款功能强大的J2EE集成开发环境支持代码编写配置测试以及除错最新版本是70主要增加Matisse4 MyEclipse Gui Biulder的整合AjaxWeb 20 开发工具16 Java编程示例com 第一个Java Application 例1-2第一个Java Application程序MyApplicationjava import javautil 下面我们用到了Date和Properties这两个类是属于Javautil这个包的而System和Runtime这两个类是属于Javalang这个包的public class MyApplication public static void main String[] args Sycomtln new Date 在命令行下面打印出日期Properties p SystemgetProperties 获得系统的Properties对象p plist Systemout 在命令行下打印出p中的各个系统变量的值Sycomtln "--- Memory Usage" 打印一行字符串---Memory Usage Runtime rt RuntimegetRuntime 获得系统的Runtime对象rt Sycomtln "Total Memory " rttotalMemory " Free Memory " rtfreeMemory 打印总内存大小打印空闲内存大小Sycomtln new Date 打印语句的参数是一个日期对象Date而创建Date对象的目的就是把它的值发给println 语句一旦这个语句执行完毕Date对象就没用了而后Java的垃圾回收机制会将其收回第二行中调用了SystemgetProperties 方法getProperties 是System类的一个静态方法static方法关于类的静态方法含义我们会在第三章中介绍由于它是静态的所以不必创建任何对象就可以通过类名直接调用该方法在第三行中Properties对象有一个名为list 的方法它将自己的全部内容都发给一个PrintStream对象该对象作为list 方法的参数第四行和第六行是典型的打印语句其中第六行通过运算符+的重载来连接多个字符串对象在Java中只有当+运算符作用于字符串时才能够进行重载仔细观察下述语句Sycomtln "Total Memory " rttotalMemory " Free Memory " rtfreeMemory 其中totalMemory 和freeMemory 返回的是数值并非String对象第五行通过调用Runtime的getRuntime 方法创建了一个Runtime对象该对象中包含了内存等信息com Java程序的编辑Java程序的编辑可以使用任何一种文本编辑器例如UltraEditNotepadWordpad甚至word然后只要把编辑好的文件存成后缀为java的文件当然也可以用一些集成开发环境例如Borland公司的JBuilderIBM公司的Visualage for JavaSun公司的NetBean此外还有cafekawa等其它集成开发环境comava Application应用程序要编译上述Java文件MyApplicationjava可以在命令提示符下进行编译在命令行中敲入javac MyApplicationjava 当编译结束后Java 源文件中的每一个类都会生成相应的class 文件例如上例就会生成一个MyApplicationclass文件而Java程序在执行时调用的是class 文件在命令提示符下敲入java MyApplication进行执行comJava Applet 例1-3一个Java Applet程序该程序保存在文件HelloAppletjava中import comhics 进行显示输出时需要用到类Graphics的对象import comet Applet类是所有的Java Applet的父类给这个类取名为HelloApplet 因为所有的applet程序都是Applet类的子类public class HelloApplet extends Applet public String s public void inits new String "欢迎学习Java Applet" 生成一个字符串对象public void paint Graphics g gdrawString s 25 25 在浏览器中坐标为2525的位置显示字符串s Applet小应用程序是从方法init 开始执行的在该方法中完成了对字符串s的初始化工作而显示功能是在方法paint 中执行的paint 方法是类Applet的一个成员方法其参数是图形对象Graphics g通过调用对象g的drawString 方法就可以显示输出compplet Applet程序也是一个类其编译方式与Java Application完全一样Applet的执行方式与Application完全不同Applet程序必须嵌入到6>html文件中才能够执行因此必须编写一个相应的html文件此处为HelloApplethtml代码中包含有applet标记如下applet code HelloAppletclass height 100 width 300 然后可以通过JDK所提供的命令appletviewer在命令提示符下敲入appletviewer HelloApplethtml 此时系统会弹出另外一个窗口运行该applet程序运行结果如图1-9所示17反编译工具的介绍使用SDK提供的反编译器javapexe可以将字节码反编译为源码查看源码类中的public方法名字和public成员变量的名字例如javap comon 将列出Button中的public方法和public 成员变量下列命令javap –private comon 将列出Button中的全数方式和成员变量查看更多的参数能够执行javap -help来显示18 Java JDK 6 新功能介绍2006年末Sun 公司发布了Java Standard Edition 6Java SE 6的最终正式版跟Java SE 5相较在性能方面有了专门大的提升Java SE 6 在Instrumentation 方面的新特性在Java SE 6 里面instrumentation 包被给予了更壮大的功能启动后的instrument 本地代码instrument和动态改变classpath 等等Java SE 6 与HTTP 相关的诸多新特性这使得Java SE 平台本身对网络编程尤其是基于HTTP 协议的因特网编程有了加倍壮大的支持Java 管理扩展JMX 架构及其框架和在Java SE 5 中新引入的JMX API -- comgement 包此API 在Java SE 6 中做了改良JDK 6 中新增加的编译器APIJSR 199利用此API您能够在运行时挪用Java 编译器能够编译不同形式的源代码文件还能够收集编译器的诊断信息Java SE 6 在数据库编程方面的新特性包括嵌入在JDK 中的Java DB Derby和JDBC 40 的一部份Java SE 6 新引入的对JSR 223 的支持它旨在概念一个统一的规范使得Java 应用程序能够通过一套固定的接口与各类脚本引擎交互从而达到在Java 平台上挪用各类脚本语言的目的Java SE 6 中提供的XML 处置框架和在此框架之上结合注释Annotation 技术所提供的壮大的针对Web 服务的支持19 练习试探题 1 Java运行平台包括三个版本请选择正确的三项 A J2EE BJ2ME C J2SE DJ2E 2 开发与运行Java程序需要经过的三个主要步骤为________________________和____________ 3 如果一个Java Applet源程序文件只定义有一个类该类的类名为MyApplet则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______ Java程序分为Java ApplicationJava 应用程序和Java AppletJava小应用程序两种类型图1-9 Applet例子运行结果SDK的安装目录的jre文件夹中包含着Java应用程序运行时所需要的Java类库这些类库被包含在jre\lib目录下的压缩文件rtjar中SDK平台提供的Java编译器javacexe和Java解释器javaexe位于Java安装目录的bin文件夹中为了能在任何目录中使用编译器和解释器应在系统特性中设置Path对于Windows2000Windows2003Windows XP用鼠标右键点击我的电脑弹出菜单然后选择属性弹出系统特性对话框再单击该对话框中的高级选项然后点击按钮环境变量添加如下的系统环境变量百度文库- 让每个人平等地提升自我11。
第⼀章-Java基础笔记Java语⾔的概述Java是⼀门⾯向对象的语⾔,Java相对于C语⾔来说学习相对简单,它主要的三⼤特点就是:封装、继承、多态,并且只需要进⾏⼀次源码编译,在任何装有对应版本的JVM 虚拟机环境的计算机下运⾏;Java的三个版本JavaSE主要⽤于桌⾯应⽤的开发JavaME主要⽤于嵌⼊式系统的开发JavaEE主要⽤于企业级的WEB端开发和服务器开发Java环境介绍JDK - 提供了开发者的⼀些⼯具包,并包含了[JRE和JVM]JRE - Java的运⾏环境,提供了运⾏时需要的类库,并包含了[JVM]JVM - Java的虚拟⼀块内存区域,⽤于执⾏Java的代码Java跨平台交互图Java代码的运⾏机制后缀点java的⽂件会通过 javac命令进⾏⽂件的编译成⼀个能够被JVM读懂的字节码⽂件,通过加载、校验、初始化的过程都内存中,通过JVM寄存器读取⽂件中的⾏号,进⾏执⾏相关代码;注释注释是为了在编写程序时对某个类、⽅法或是⼀段代码进⾏功能作⽤的说明,它不会被编译成代码执⾏,只是起到⼀个描述作⽤,便于对代码的理解;Java中的注释分为3种:单⾏注释://多⾏注释:/* */⽂档注释:/** */对注解的内容⽣成JavaDoc⽂档DOS命令进⼊到要⽣成Doc⽂档的层级⽬录,执⾏:javadoc -encoding UTF-8 -charset UTF-8 ⽂件名称/*** @Author JavaCat7* @Description 这是⼀个⽂档注释*/public class Demo{/*** @Parameter args 对参数的描述* @Description 这是⼀个⽂档注释*/public static void main(String[] args){//这是⼀个单⾏注释System.out.println("Hello Java");/*这是多⾏注释这是多⾏注释*/}}标识符每个⼈都有名字,⽽标识符是为了给代码中的类、接⼝、⽅法、变量取⼀个名字,但它们的明⽩是有着严格规范的;规范:每个⼈都有名字,⽽标识符是为了给代码中的类、接⼝、⽅法、变量取⼀个名字,但它们的明⽩是有着严格规范的;**规范:**1.严格区分⼤⼩写;2.开头可以是$ 或 _ 或 A-Z a-z的字母组成,也可以汉字(不会这么⼲);3.可以由数字、字母或者是 $ 或 _ 组成,但数字不能⽤于开始;4.不可以包含特殊字符;5.不能以Java语⾔中的保留字作为命名;6.类名采取⼤驼峰命名法;7.⽅法和变量采取⼩驼峰命名法;8.常量采取⼤学加_进⾏命名;基本数据类型Java是强类型计算机语⾔,所有的变量必须先定义才能使⽤,对于强类型⽽⾔主要就是指的数据安全,强类型的语⾔有很多,⽐如C、C++、python...计算机存储单位换算bit(位) - 是计算内部数据存储的最⼩单元,通过8个⼆进制位进⾏表⽰;byte(字节) - 是计算机中数据处理的基本单位,通常使⽤B来表⽰;8个bit(位) = 1B(字节)1024个B(字节) = 1KB1024个KB = 1MB1024个MB = 1GB....//整数类型byte a = 1;short b = 2;int c = 3;long d = 4L;//⼩数类型float e = 5.0f;duble f = 6.0d;//字符类型char g = 'a';//布尔类型boolean h = true;boolean i = false;数据类型的转换各数值相关数据类型⽀持类型上的转换,既可以把排序级别较低的类型转换成排序级别较⼤的类型,也可以把排序级别较⾼的类型转换成级别较低的类型(但会造成数据的丢失);数据的转换强制类型转换 - 在要转换的变量前使⽤:要转换的对应数据类型如- (int)⾃动类型转换 - 在不同的数值数据类型运算中,它会以排序级别较⾼的数据类型作为基础⾃动转换int number1 = 128;//正常byte的值是 -128 - 127,强制把int类型转换成byte会造成数据的不精确byte number2 = (byte)number1;int number3 = 519;float number4 = 1.0f;//在运算过程中因为float的排序级别⽐int⾼,那么它会⾃动转换成float类型在完成运算float number5 = number3 + number4;变量,静态变量,常量及作⽤域变量是指可以变化的值,通过数据类型和变量名可以在内存中申请⼀块存储的空间,通过内存的引⽤地址可以设置改变内存中存储的值或者修改值,所有的变量必须先赋值才可以使⽤;成员变量成员变量是指在类中与⽅法同级的位置中定义的成员变量,在该位置定义的变量可以不⽤设置值就可以使⽤,因为它会对类进⾏初始化,并完成初始化赋值,就算不给他们赋值也会有默认的初始值,他们的默认初始值都是最⼩的单元;作⽤域成员位置的变量,可以在⾮静态⽅法的所有位置使⽤,如果要在静态⽅法中使⽤,需要先创建对象;public class Variable{int a; //默认为:0float b; //默认为:0.0char c; //默认为:''boolean d; //默认为:false}局部变量局部变量是指在⽅法内部定义的变量,必须要先完成初始化后,才可以被使⽤;作⽤域局部位置的变量,外部⽆法使⽤,只能在⽅法内部使⽤,可以和外部的变量名称相同;public class Variable{int number;public void method(){int number = 3;//可以和成员位置的变量名称相同}}静态变量静态变量是指被static关键字修饰的变量,被修饰的变量⼜称为类变量;作⽤域静态变量可以作⽤域与所有⽅法中,静态变量只能定义在类的成员位置;public class Variable{static int number ;public static void main(String[] arags){System.out.println(number);}public void method(){System.out.println(numbe);}}常量常量是指不能被改变的值,它在创建到成员位置必须要先完成赋值,⼀旦被创建它的值是不允许被更改的;作⽤域它的作⽤域和成员变量相同public class Variable{final int NUMBER = 3.1415926;}静态常量静态常量是指从属于类的常量,在完成初始化以后是不可以被修改的,并且被public所进⾏修饰;作⽤域它的作⽤域和静态变量相同运算符算术运算符int a = 5;int b = 2;int number = a + b; //number = 7;int number = b - a; //number = 3;int number = a * b; //number = 10;int number = a / b; //number = 2,只取整数;double number = a / (double)b; //number = 2.5int number = a % b; //number = 1;⾃增⾃减运算符int a = 1;int b;b = a++; //b = 1; 先把a的值赋值给b,后a进⾏ +1 操作;b = a--; //b = 2; a前⾯进⾏了⾃增那么就是2,先把2赋值给b,然后进⾏ -1 操作;b = ++a; //b = 2; 前⾯a进⾏了⾃减那么就是1,先对a进⾏⾃增加1,然后在赋值给b;b = --a; //b = 1; 前⾯a是2,先对a进⾏⾃减1,在赋值给b;赋值运算符int a = 5;//把 5 赋值给 a;int b = 2;//把 2 赋值给 b;a += b; // a = 7(a+b的结果在赋值给a);a -= b; // a = 3;a *= b; // a = 10;a /= b; // a = 2;a %= b; // a = 1;关系运算符int a = 5;int b = 2;a > b; //truea < b; //falsea >= b; //falsea <= b; //truea == b; //falsea != b; //true逻辑运算符boolean a = true;boolean b = false;a &&b = false;//都true则true,第⼀个条件为false就不会在看第⼆个条件,直接返回falsea ||b = true;//⼀个条件为true则true,第⼀个条件为tre就不看第⼆个条件,直接返回true! a = false;//取反a &b = false;//2个条件都要执⾏a |b = true;三元运算符int a = 5;int b = 5;a ==b ? "等于":"不等于"; //为true返回第⼀个,为false返回第⼆个流程控制语句If语句if语句就是判断条件是否成⽴,成⽴就执⾏if中的代码,不成⽴就不进⼊;boolean flag = true;if(flag){System.out.println("...");}if...else语句if...else语句就是根据判断的条件是否成⽴,成⽴⾛if语句,不成⽴⾛else语句;boolean flag = true;if(flag){System.out.println("成⽴");}else{System.out.println("不成⽴");}if...else if语句if...else if⽀持多条件的判断,只会进⼊⼀个匹配的条件;boolean flag = true;boolean fail = false;if(flag){System.out.println("条件匹配");}else if(fail){System.out.println("条件匹配");}else{System.out.println("条件都不匹配");}switch条件控制语句witch语句从JDK1.7开始可以⽀持匹配:String字符串;注意事项:每个case 后⾯必须跟⼀个数值常量或字符串常量⽤于匹配;匹配的语句后⾯需要加上break关键字,防⽌case穿透;String week = "星期⼀";switch(week){case "星期⼀":System.out.println("今天是星期⼀");break;case "星期⼆":System.out.println("今天是星期⼆");break;case "星期三":System.out.println("今天是星期⼆");break;default:System.out.println("今天星期⼏都不是");}循环控制语句for循环语句for(初始值,条件表达式,更新)for(int i = 1 ; i <= 10 ; i++){System.out.println(i);}增强for循环for(接收类型的变量,表达式)int [] arrays = {1,2,3,4,5,6,7,8,9,10};for(int i : arrays){System.out.println(arrays);}while循环语句while(条件表达式)int number = 1;while(number <= 100){System.out.println(number);number ++;}do...while循环语句do{先把语句执⾏⼀遍}while(条件表达式);boolean flag = true;do{System.out.println("先执⾏⼀遍");flag = false;}while(flag);break和continue关键字break关键字结束循环的意思;for(int i = 1; i <= 100; i++){if(i == 10){System.out.println("打印10后结束循环");break;}}continue关键字跳过当前循环,进⼊下⼀次循环;for(int i = 1 ; i <= 10; i ++){if(i % 2 == 1){continue;}System.out.println("打印:"+i);}⽅法概述:⽅法就相当于使⽤多⾏代码进⾏组合去实现的⼀个功能⽚段,对代码进⾏封装利⽤,可实现多次调⽤;⽅法的定义修饰符返回值⽅法名称(形参形参名称){⽅法体}public class Function{public static void main(String[] arags){}public void method1(){}public void method2(String name,int age){}public static void method3(){}public int method03(){int a = 3;return a;}public int method04(int a,int b){if(a == b){System.out.println(a + "和" + b + "相等");return -1;}return a > b ? a : b;}}⽅法的重载⽅法的重载是指⽅法名称相同,传递的参数类型不同,个数不同,顺序不同与返回值⽆关;这样的⽅法被称为⽅法的重载;public class Function{public int max(int a,int b) {return a > b ? a : b;}public double max(double a,double b){return a > b ? a : b;}}形参和实参形参是指在()内部的参数,实参是指被真实传递的参数;public class Function{public static vid main(String[] args){Function function = new Function();function.max(3,5);}public int max(int a,int b) {return a > b ? a : b;}}可变参数在⽅法的()中我们有时候不知道要传递多少参数,那么我们可以传递⼀个数据类型紧跟后⾯加上...来表⽰;但需要注意的是⼀个⽅法中指允许⼀个可变参,如果有其他类型的参数,那么可变参数需要写在最后⾯;可变参数本质上就是⼀个数组;public class Function{public void method(String name,int... numbers){for(int num : numbers){System.out.println(num);}}}递归递归的本质就是⾃⼰调⽤⾃⼰,它可以解决⼀些业务,但效率和开销较⼤,对⼀些⽐较⼩的运算可以使⽤;//递归求3的阶乘public class Founction{public static void main(String[] args){}public int founction(int number){int result = 1;if(number == result){return result;}return number * founction(number - 1);}}数组数组就是⼀组数据的集合,Java中的数组必须存储和数据类型相符合的值,不允许与定义的数据类型不匹配;⼀旦数组被创建出来,它的长度就不允许被改变,数组有下标(索引)的概念,都是从0开始,如果操作的数据超过数组的长度那么就会报出下标索引越界异常[ IndexOutofBoundsException ];数组的定义int[] array = new int[3];int array[] = new int[3];int array[] = {1,2,3};数组的内存模型图数组的遍历⽅式int[] arr = new int[10];//⽅式⼀for (int i = 0; i < arr.length ; i ++) {System.out.println(arr[i]);}//⽅式⼆for (int num : arr) {System.out.println(num);}⼆维数组int[][] arr = new int[3][2];String[][] strArr = {{"hello","hello"},{"hi","hi","hi",{"java","java","java","java"}}Arrays⼯具类Arrays数组的⼯具类,是jdk已经帮我们提供好的⼀套数据⼯具类,⽅便我们对数据相关进⾏⼀些操作;int[] arr = {3,51,1,33,82,22,55,53};Arrays.toString(arr);//把数组变成⼀个字符串Arrays.sort(arr);//对数组内容进⾏升序排列Arrays.fill(arr,0);//把数组的内容全部进⾏替换为0常见算法冒泡排序public static int[] arr = new int[]{5, 2, 7, 4, 6, 9, 8, 13, 19, 11, 17, 15};//冒泡排序算法public static void popArithmetic(int[] arr) {//⽐较的轮数是数组长度-1for (int i = 0; i < arr.length - 1; i++) {//每次⽐较⼀轮,需要减少1次⽐较的次数for (int j = 0; j < arr.length - i - 1; j++) {//如果前⾯的数据⽐后⾯⼤,那么就交换位置if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}System.out.println("最终结果是:" + Arrays.toString(arr));}选择排序public static int[] arr = new int[]{5, 2, 7, 4, 6, 9, 8, 13, 19, 11, 17, 15};//选择排序public static void selectOrderArithmetic(int[] arr) {//⽐较的轮数是数组长度-1for (int i = 0; i < arr.length - 1; i++) {//每⽐较⼀次,需要减少1次⽐较的次数,会把⼩的先往前排for(int j = i+1;j<arr.length;j++){if(arr[i]>arr[j]){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}System.out.println("最终结果是:" + Arrays.toString(arr));}⼆分查找public static int[] arr = new int[]{1, 2, 3 , 4, 6, 7, 8, 13, 19};//2分查找法public static void branchFind(int [] arr,int number){int startNode = 0;int endNode = arr.length-1;int middle = 0;while (startNode <= endNode){//中间的指针由开始节点和结束节点计算得来middle = (startNode+endNode)/2;if(number == arr[middle]){System.out.println("找到了");break;}else if(number < arr[middle]){endNode=middle-1;System.out.println(number+"⼩于中间值,结束节点变更为中间节点-1"); }else if(number > arr[middle]){startNode = middle+1;System.out.println(number+"⼤于中间值,开始节点变更为中间节点+1"); }else{System.out.println("没有找到该元素");break;}}}。
诚信、创新、开放、合作JAVA的面向对象编程--------课堂笔记面向对象主要针对面向过程。
面向过程的基本单元是函数。
什么是对象:EVERYTHING IS OBJECT(万物皆对象)所有的事物都有两个方面:有什么(属性):用来描述对象。
能够做什么(方法):告诉外界对象有那些功能。
后者以前者为基础。
大的对象的属性也可以是一个对象。
为什么要使用面向对象:首先,面向对象符合人类看待事物的一般规律。
对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。
方法的定义非常重要。
方法有参数,也可能有返回值。
注意区分:对象(本身)、对象的实现者、对象的调用者。
分析对象主要从方法开始。
我们通过类来看待对象,类是对象的抽象。
其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。
对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。
这样才能使每个对象本身做成最好的。
对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。
实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。
可复用性是OOP的基础。
比较面向过程的思想和面向对象的思想:面向过程的思想:由过程、步骤、函数组成,以过程为核心;面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。
面向过程是先有算法,后有数据结构。
面向对象是先有数据结构,然后再有算法。
在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。
开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。
从语法上来看,一个类是一个新的数据类型。
在面向对象编程中,除了简单数据类型,就是对象类型。
定义类的格式:class Student{代码}注意类名中单词的首字母大写。
实例变量:定义在类中但在任何方法之外。
(New出来的均有初值)局部变量:定义在方法之中的变量。
局部变量要先赋值,再进行运算,而实例变量均已经赋初值。
这是局部变量和实例变量的一大区别。
public class Hello{public static void main(S tring args[]){System.out. println("你好,很高兴学习Java");}}保存为Hello.java(注意保存的名字必须是和主类的名字一样(包括大小写),所谓主类就是包含main方法的类)(b).按住"窗口+R"组合键打开运行窗口输入cmd进入dos界面转换盘符到刚刚java文件保存路径(例如保存在D盘,输入D:回车)然有执行命令javac Hello.java回车.这时会发现在和Hello.java同一个文件夹下生成了Hello.class字节码文件,因为上面是一个应用程序的格式所以可以通过java解释器来生成应用程序.继续输入java Hello回车.屏幕会显示"你好,很高兴学习Java"b.小应用程序(a)打开记事本输入程序代码:import java.applet.*;import java.awt.*;public class Boy extends Apple t//entends代表Boy继承了小应用程序Applet类{public void paint(Graphics g){g.setColor(Color. red);g.drawString("我一边喝着咖啡,一边学Java呢",5,30);g.setColor(Colo r.blue);g.drawString("我学得很认真",10,50);逻辑类型:boolean用ture(真)和false(假)来赋值,没有赋值默认情况时表示false整数类型:(1)int型变量,内存分配4个字节的空间,即32位的空间,所以可以表示-2^31到2^31-1的整数,例如int x=10;(2)byte型变量,内存分配1个字节的空间,范围从-2^7到2^7-1,例如byte x=127(3)short型变量,内存分配2个字节的空间,范围从-2^15到2^15-1,例如short x=1000(4)long型变量,内存分配8个字节的空间,范围从-2^63到2^63-1,例如long x=700000;字符类型:(1)常量:java使用unicode字符集,所以字符表中的每个字符都是一个字符常量,用单引号括上,例如'A','你','あ'注意有些字符不能通过键盘直接输入到字符串中或程序中,这时就需要转意字符常量,例如: '\n'(换行),'\b'(退格),'\''(单引号)等等.(2)变量:通过关键字char来定义字符变量char型变量,内存分配2个字节的空间,因为是字符不存在负数的概念,所以范围从0到2^16-1(即65535),例如char name='刘',grade='A'如果要查一个字符在unicode字符集里的顺序位置,必须使用int类型转换,如(int) 'A',但不可以用short型转换(范围只有一半);同样道理如果想得到一个在0到655 35之间的数字在unicode字符集中所对应的字符必须使用char型转换,如(char)30 000.具体含义理解如下面代码程序代码:public class Sign_Num{public static void main(String args[]){char chinaWord='你',japanWord='ぁ';int p1=36328,p2=38358;System.out.println("汉字\'你\'在unicode表中的顺序位置:"+(int)china Word);System.out.println("日语\'ぁ\'在unicode表中的顺序位置:"+(int)japan Word);System.out.println("unicode表中第20328位置上的字符是:"+(char)p1);System.out.println("unicode表中第12358位置上的字符是:"+(char)p2);}}除了char以外还要稍微介绍一下String,在C或C++中,String是一个以空为终结的字符数组,而在java中它是ng包中的String类来创建一个字符串变量,因此字符串变量是一个对象.String的具体介绍在后面会学习到.浮点类型:(1)float型内存分配4个字节,占32位,范围从10^-38到10^38和-10^38到-10^-38例float x=123.456f,y=2e20f;注意float型定义的数据末尾必须有"f",为了和double区别(2)double型内存分配8个字节,范围从10^-308到10^308和-10^-308到-10^-308例double x=1234567.98,y=8980.09d;末尾可以有"d"也可以不写基本数据类型转换:类型按精度从低到高:byte short int long float double(1)当把级别低的变量赋值给级别高的变量时,系统自动完成数据类型的转换,例int x=100;float y;y=x;结果y的值应该是100.0(2)当把级别高的变量赋值给级别低的变量时,必须使用显示类型转换运算,格式为:(类型名)要转换的值;例int x=(int)23.89f;结果x的值为23所以强制转换运算可能导致精度的损失(3)当把一个整数赋值给一个byte,short,int或long型变量时,不可以超出这些变量的取值范围,否则必须进行类型转换运算,例byte a=(byte)128;byte b=(byte)-129;//超出范围结果a值为128,b值为127用下面的代码来复习下:程序代码:public class Example2_2{public static void main(String args[]){int c=2200;总结:本节课把编程语言中的基础-关键字,数据类型等概念复习一遍,尤其是在java中的用法,为以后在使用变量的学习中做基础.return distance;}void g(){inty;y=a;//非法,a是局部变量,不在find()中就会失效}}注意:成员变量在它在类中书写的先后位置无关.但不提倡把成员变量的定义分散的写在方法之间或类体的后面.b.成员变量又分为实例成员变量(实例变量)和类成员变量(类变量)类变量是指变量类型前加关键字static的成员变量,也称为静态变量.例:程序代码:class Sun{float x;//实例变量static int y;//类变量}c.当局部变量与成员变量名字相同时,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效,例:程序代码:class Tom{int x=90,y;void f(){int x=3;y=x;//y得到的值应是3,因为成员变量x=90与y在此方法体里失效}}但如果想在方法体内使用成员变量则通过关键字this来实现,例:程序代码:class三角形{float sideA,sideB,sideC,lengthSum;void setside(float sideA,float sideB,float sideC)载的.用法:一般用类创建对象时,使用构在方法,后面会有详细说明.程序代码:class梯形{float上底,下底,高;梯形(){上底=60;下底=100;高=20}梯形(float x,float y,float z){上底=x;下底=y;高=z;}}2.对象类是创建对象的模板.当使用一个类创建了一个对象时,也就是说给出了这个类的一个实例.(1)对象的创建:包括对象的声明和为对象分配内存空间声明格式:类的名字对象的名字;分配内存空间格式;类的名字对象的名字=new类的名字();例:程序代码:class XiyoujiRenwu{float height,weight;String head,ear,hand,foot,mouth;void speak(String s){System.out.println(s);}}class A{public static void main(String args[]){XiyoujiRenwu zhubajie;//声明对象zhubajie=new XiyoujiRenwu();//为对象分配内存,使用new运算符和默认的构造方法class XiyoujiRenwu{float height,weight;String head,ear,hand,foot,mouth;void speak(String s){head="歪着头";System.out.println(s);}}class Example4_3{public static void main(String args[]){XiyoujiRenwu zhubajie,sunwukong;//声明对象zhubajie=new XiyoujiRenwu();//为对象分配内存sunwukong=new XiyoujiRenwu();zhubajie.height=1.80f;//对象给自己的变量赋值zhubajie.head="大头";zhubajie.ear="一双大耳朵";sunwukong.height=1.62f;//对象给自己的变量赋值sunwukong.weight=1000f;sunwukong.head="绣发飘飘";System.out.println("zhubajie的身高:"+zhubajie.height);System.out.println("zhubajie的头:"+zhubajie.head);System.out.println("sunwukong的重量:"+sunwukong.weight);System.out.println("sunwukong的头:"+sunwukong.head);zhubajie.speak("俺老猪我想娶媳妇");//对象调用方法System.out.println("zhubajie现在的头:"+zhubajie.head);sunwukong.speak("老孙我重1000斤,我想骗八戒背我");//对象调用方法System.out.println("sunwukong现在的头:"+sunwukong.head);}}程序代码:class梯形{float上底,下底,高,面积;梯形(float x,float y,float h){上底=x;下底=y;高=h;}float计算面积(){面积=(上底+下底)*高/2.0f;return面积;程序代码:class Takecare{static int x;int y;}class A{Takecare A1=now Takecare();Takecare A2=now Takecare();//在此代码中如果给x赋值那么,A1.x和A2.x指的是同一个内存空间,无论那个对象修改都是对一个x进行操作}当java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类的实例成员变量不会被分配内存.但是类中的类变量被加载到内存时,会被分配相应的内存空间.简单的说就是,没创建对象当类加载到内存时候,只有类变量(static)会被分配内存空间,只有创建对象时候实例变量才会被分配空间的.像上面的例子里,在没有创建Takecare的对象时候,Takecare::x是有空间的即此时可以访问的,当且仅当Takecare A1=now Takecare()时A1.y才会有内存空间.通过下面的例子体会一下,不同的对象会共享一个底程序代码:class梯形{float上底,高;static float下底;梯形(float x,float y,float h){上底=x;下底=y;高=h;}float获取下底(){return下底;}void修改下底(float b){下底=b;}}class Example4_7{public static void main(String args[]){梯形laderOne=new梯形(3.0f,10.0f,20),laderTwo=new梯形(2.0f,3.0f,10);梯形.下底=200;//通过类名操作类变量System.out.println("laderOne的下底:"+laderOne.获取下底());System.out.println("laderTwo的下底:"+laderTwo.获取下底());laderTwo.修改下底(60);//通过对象操作类变量System.out.println("laderOne的下底:"+laderOne.获取下底());System.out.println("laderTwo的下底:"+laderTwo.获取下底());}}2.实例方法和类方法和实例变量和类变量的描述时是一样,当类的字节码加载到内存是类方法的入口地址就会被加载到相应的内存空间,即此时可以访问;而当且只有创建对象之后,实例方法的入口地址才会被加载到内存中,这是才可以调用.既然知道了实例方法和类方法开始生效的时间,可以知道他们可以调用何种类的成员变量:1)类方法因为是在创建对象之前就已经生效了,这时候实例变量还没有被分配内存空间,只有类变量被分配了内存空间,所以类方法只能调用被分配内存空间的变量即类变量;2)实例方法是在创建对象之后才开始生效的,这是无论是类变量还是实例变量都已经被分配了内存空间,所以实例方法生效后可以调用类变量和实例变量.程序代码:class Fibi{public static long fibinacii(int n){long c=0;if(n==1||n==2)c=1;elsec=fibinacii(n-1)+fibinacii(n-2);return c;}}public class Example4_8{public static void main(String args[]){System.out.println(Fibi.fibinacii(7));//可见还没哟创建Fibi的对象时就可以调用fibinacii()方法,因为属于static修饰的类变量}}包包是java中有效的管理类的一个机制,包有类似于目录结构的层次结构.通过import关键字可以在程序中使用包语法格式:import<包名>.*;//包含包中的所有类import<包名><类名>//包含包中的指定类例如:import java.awt.*;//包含java.awt包中的所有类import java.awt.JButton;//包含java.awt包中的JButton类既然知道了怎么使用,那如何制作包呢,可以通过关键字package声明包语句.package语句作为java源文件的一个条语句,指明该源文件定义的类的所在包.语法格式:package包名;如果源文件中省略了package语句,那么源文件中定义命名的类将被隐含的认为是无名包的一部分,即源文件中定义命名的类在同一个包中,但该报没有名字而已.包还可以是一个合法的表示符,也可以是若干个标识符加"."分割而成,如package sunrise;package 程序如果使用了包的语句,如package desney.tom;那么目录必须包含有如下结构,如C:\cartoon\desney\tom并且要将源文件保存在目录C:\cartoon\desney\tom中,才能使用这个包,然后编译源文件: C:\cartoon\desney\tom\javac源文件.java或jacac C:\cartoon\desney\tom\源文件.java从一个例子体会此过程:程序代码:package desney.tom;public class PrimNumber{public void getPrimnumber(int n){int sum=0,i,j;for(i=1;i<=n;i++){for(j=2;j<=i/2;j++){if(i%j==0)break;}if(j>i/2)System.out.print(""+i);}}public static void main(String args[]){PrimNumber p=new PrimNumber();p.getPrimnumber(20);}}保存上述源文件到C:\cartoon\desney\tom下,然后编译C:\cartoon\desney\tom\javac PrimNumber.java运行程序时必须到desney\tom的上一层目录cartoon中来运行,如C:\cartoon\java desney.tom.PrimNumber因为起了报名,类PrimNumber的全名应该为desney.tom.PrimNumber导入这个包时也要注意名称程序代码:import desney.tom.PrimNumber;所以用package可以把认可类都打包然后在其他程序中使用,于c或c++中的头文件有着相似的效果,差别就是java中的包里只能是类注意:使用import可以导入包中的类.在编写源文件时,除了自己编写的类外,经常需要使用java提供的去多类,这些类可能不在一个包中.在学习java时,使用已经存在的类,避免一切从头做起,这是面向对象编程的一个重要方面.总结:具体的把static修饰的变量和方法的使用方法做了介绍;对java中包有了初步认识。
Java_U1课堂笔记(一)初识Java一、配置Java环境变量:1、复制JDK安装路径,如:C:\Program Files (x86)\Java\jdk1.7.0_51\bin2、粘贴到我的电脑->属性->高级系统设置->环境变量->Path3、加上英文的分号4、验证是否配置正确:dos-->java -version进入DOS窗口的方法:运行(或快捷键windows键+r)二、Java程序编写三步骤:编写 .java编译:javac **.java运行java **三、使用jad反编译工具:DOS中切换至jad安装目录,如:C:\jad1.5.8g.win输入命令:jad -s java D:\t01\HelloWorld.class四、变量的使用:页脚内容1变量取名,命名规则类型数值:int、double、float(f)非数值:char、String类型名字= 值;int age=10;五、上机验证:System.out.println(5+3);System.out.println("5"+3);六、Scanner的使用,接收用户键盘输入Scannerimport java.util.Scanner;Scanner input=new Scanner(System.in);input.next();(相关方法,nextDouble()、nextFloat()、nextInt(等)bin:exejre页脚内容2libsrc.zip(二)数据类型一、数据类型转换自动类型转换:int num=100;double b=num;强制类型转换double num=100.9;int b=(int)num;二、运算符赋值运算符=算数运算符+ - * / % ++ --+= -= *= /= %=关系运算符> < >= <= == !=逻辑运算符&& || !页脚内容3条件运算符?:了解优先级即可三、流程控制1、if:基本ifif-else多重if嵌套if注意:条件是boolean值常见错误:if(num=5){}else{}大括号不省略多重if顺序问题注意:页脚内容4流程图的使用和问题的分析解决过程2、switch等值比较注意:(1)语法上的常见错误(2)和多重if的异同循环结构:解决重复性的操作简介高效(三)循环结构一:循环:(1)while循环while(条件){操作循环变量迭代}注意:页脚内容5代码缩进循环能否正常退出(2)do-while循环do{循环}while(条件);注意:代码缩进循环能否正常退出和while的区别:语法上、执行上(至少执行一次)(3)for循环for(变量初始化;条件;变量迭代){循环操作}页脚内容6注意:代码缩进循环能否正常退出执行顺序循环变量可以有多个二、双重循环双重循环的特点:外层循环进入一次,内层循环就要完整的执行一遍特点:外执行一次内执行一轮双重循环次数:外层循环次数*内层循环的次数实现的重点:页脚内容7(1)确定谁做外层循环,确定谁做内层循环(2)两层循环变量有没有规律性的关系1、打印图形:找规律矩形行i外层星星j内层1 52 53 54 55 5平行四边形行i外层内层:空格星星1 4=5-i 52 3=5-i 53 2=5-i 5页脚内容84 1=5-i 55 0=5-i 5等腰三角形行i外层内层:空格星星1 4=5-i 1=2*i-12 3=5-i 3=2*i-13 2=5-i 5=2*i-14 1=5-i 7=2*i-15 0=5-i 9=2*i-12、打印九九乘法表行i(1-9)第一个操作数i 第二个操作数(从1到i)三:循环应用1、分析需求:重复做一件事情前提条件(循环进入的条件)做什么事情(循环操作)页脚内容92、用代码解释选择一种合适的循环结构whiledo-whilefor根据所选择的结构套用语法while(条件){}do{}while(条件);for(循环变量初始化;条件;迭代){}3、容易出错的点(1)变量在何处声明例1:计算5门课平均成绩页脚内容10例2:for(int i=0;i<=6;i++){System.out.println(i);}int j=i;System.out.println(j);(2)没有适当的(合适的)跳出循环根本跳不出来根本进不去循环多或少循环了一次四、循环的跳转break:跳出整个循环continue:跳出本次循环,进入下次循环return:结束方法(了解即可)五、程序调试页脚内容11设置断点Debug->单步运行F5 F6观察变量(三)数组一、数组1、数组的基本使用(1)数组的作用一组相同数据类型的数数组也是变量,内存中一串连续的空间(2)数组的几个基本概念标识符(数组名字)元素下标:从0开始数据类型数组的长度(数组名字.length)(3)数组使用步骤声明数组页脚内容12int[] num;int num[];分配空间num=new int[8];赋值处理数据int[] num={5,8,7};int[] num=new int[]{5,8,7};(4)循环和数组结合的使用下标(0-数组.length-1)遍历时两种方法:方法一:传统for方法二://增强型for(foreach)for(int score:scores){sum+=score;页脚内容13}二、回顾数组变量,内存中一串连续的空间相同数据类型的一组数据数组的基本概念元素数据类型(数组类型)下标(0,数组.length-1)数组的长度:数组.length数组的基本使用声明数组(类型[] 数组名称或类型数组名称[])分配空间(数组名称= new 数据类型[5];)赋值(num[0]= ;)处理数据变量:基本数据类型页脚内容14int、double、float、char、boolean引用数据类型String、数组内存分布不同使用上不同.三、数组的典型使用1、求最大值、最小值(打擂台)2、插入算法(找位置)3、冒泡排序数组存储5个数字下标:0 1 2 3 4外层循环内层循环i:0第一轮+ j比较次数:4 =4:length-1页脚内容15i:1第二轮+ j比较次数:3=4:length-1i:2第三轮+ j比较次数:2 =4:length-1i:3第四轮+ j比较次数:1=4:length-1i+j=数组.length-1j=数组.length-1-i共比较几次?5个数字:4+3+2+1=106个数字:5+4+3+2+1=157个数字:6+5+4+3+2+1=21n个数字:(n-1)+(n-2)+(n-3)+.....+1=n*(n-1)/24、Arrays类的使用常用方法:页脚内容16sort().....记得查API帮助文档(帮助文档已经在网盘中提供了,如果大家在Oracle官网中没有下载,可以找中心的技术顾问老师提供网盘用户名和密码,登录后拿到帮助文档)数据类型基本数据类型int double char boolean 。
Java基础知识总结Java基础知识总结写代码:1,明确需求。
我要做什么?2,分析思路。
我要怎么做?1,2,3。
3,确定步骤。
每一个思路部分用到哪些语句,方法,和对象。
4,代码实现。
用具体的java语言代码把思路体现出来。
学习新技术的四点:1,该技术是什么?2,该技术有什么特点(使用注意):3,该技术怎么使用。
demo4,该技术什么时候用?test。
-----------------------------------------------------------------------------------------------一:java概述:1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;1994年将Oak语言更名为Java;Java的三种技术架构:JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。
2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdkpath=%JAVA_HOME%\bin2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
1、j ava简介Java是现在最为流行的编程语言之一,也是拥有众多厂商支持的编程语言之一,同时Java已经成为了一个事实上的应用层开发的标准(基于业务的开发)。
其上所构建出来的框架也是最多的,发展的如此良好归结于一点:反射机制(所有框架的灵魂)。
Java语言的前身是在1991年开发出的OAK平台,最早是为一个GREEN的项目而设计的,此项目的核心意义在于利用email来控制家电产品运行,也就是最早所谓的物联网的概念。
当时SUN的工程师们原本打算使用C++进行开发,后来考虑到C++复杂性,于是以C++为基础开发出了一个OAK平台技术,所以Java是使用C++编写。
Java推出了Hot Java浏览器技术,并且获得了相当大的成功,所以Java最早的定位就是基于网络的。
后来Java经过了一些时间的沉淀,在1995年5月23日的时候正式推出了JDK 1.0,同时OAK被重新命名为Java,之后在1998年的时候,推出了JDK 1.2,同时将Java更名为Java 2,到了2005年十周年大会的时候,推出了JDK 1.5版本,或者称为Java SE 5.0,最新的版本是JDK 1.8,要想使用广泛,还需要至少3年。
Java是由最早的SUN(斯坦伏大学网络)开发的,SUN是一家从事于硬件生产的公司,而SUN最著名的代表作就是小型机,而最成功的应用是在amazon上进行的。
Amazon是一个在线商店,但是它自己也出版许多的技术图书。
现在amazon比较著名的服务就是云服务,像CIA也购买了amazon云服务,搭建的是一个私有云服务。
但是非常遗憾的是,SUN经历了世界的互联网低潮,低潮之后就一直没有重新站起来,在2009年的时候终于被Oracle收购了。
解释:关于Oracle收购SUN·企业平台架构:操作系统+ 数据库+ 中间件+ 编程语言;·微软的产品:Windows + SQL Server + IIS + .NET、Office;·Oracle的产品:UNIX + Oracle + OAS(收购BEA得到WebLogic)+ PL/SQL(收购SUN取得Java)、CRM、ERP;而Java技术的发展又有了几个分支:·J2SE(2005年之后更名为Java SE):提供了一些基础版本的支持;·J2EE(2005年之后更名为Java EE):提供了企业平台搭建,现在使用最广泛的架构;·J2ME(2005年之后更名为Java ME):提供了嵌入式开发的支持,但是却出生在了一个不好的时代,Nokia横行的时代,但是J2ME在哪个时候只能够作为游戏的出现。
1.1 java语言的发展史1.1.1java语言在互联网时代获得巨大成功大家想一想,在PC下用windows编写的程序能够不做修改就直接拿到UNIX系统上运行吗?显然是不可以的,因为程序的执行最终必须转换成为计算机硬件的机器指令来执行,专门为某种计算机硬件和操作系统编写的程序是不能够直接放到另外的计算机硬件上执行的,至少要做移植工作。
要想让程序能够在不同的计算机上能够运行,就要求程序设计语言是能够跨越各种软件和硬件平台的,而java满足了这一需求。
1995年,美国Sun Microsystems公司正式向IT业界推出了java语言,该语言具有安全、跨平台、面向对象、简单、适用于网络等显著特点,当时以web为主要形式的互联网正在迅猛发展,java语言的出现迅速引起所有程序员和软件公司的极大关注,程序员们纷纷尝试用java语言编写网络应用程序,并利用网络把程序发布到世界各地进行运行。
包括IBM、Oracle、微软、Netscape、Apple、SGI等大公司纷纷与Sun Microsystems公司签订合同,授权使用java平台技术。
微软公司总裁比尔盖茨先生在经过研究后认为"java语言是长时间以来最卓越的程序设计语言"。
目前,java语言已经成为最流行的网络编程语言,截止到2001年中,全世界大约有310万java程序员,许多大学纷纷开设java课程,java正逐步成为世界上程序员最多的编程语言。
在经历了以大型机为代表的集中计算模式和以PC机为代表的分散计算模式之后,互联网的出现使得计算模式进入了网络计算时代。
网络计算模式的一个特点是计算机是异构的,即计算机的类型和操作系统是不一样的,例如SUN工作站的硬件是SPARC体系,软件是UNIX中的Solaris操作系统,而PC机的硬件是INTEL体系,操作系统是windows或者是Linux,因此相应的编程语言基本上只是适用于单机系统,例如COBOL、FORTRAN、C、C ++等等;网络计算模式的另一个特点是代码可以通过网络在各种计算机上进行迁移,这就迫切需要一种跨平台的编程语言,使得用它编写的程序能够在网络中的各种计算机上能够正常运行,java就是在这种需求下应运而生的。
初识Java的第⼀课
初识Java的第⼀课我是⼀位刚刚学习Java新学员,作为⼀个跨⾏转学学习Java的新⽣来说,⽆疑是有点难理解的。
本着这对Java这门课的浓厚兴趣初识了Java的第⼀节课《初识Java》。
通过第⼀天的学习我也理解和认识到了很多内容,迫不及待的想和⼤家分享⼀下我的学习笔记与⼀些学后感。
我的Java第⼀课:①理解什么程序;②了解Java发展史;③会使⽤记事本开发简单Java程序;会使⽤输出语句在控制台输出信息;
下⾯分享和记录我的第⼀段程序:
public class HelloWorld{
public static void main(String[]args){
System.out.println(" HelloWorld ");
System.out.println(" 你好世界 ");
}
}
爱上Java从“你好世界”开始。
第一篇基础知识篇本篇主要内容:□第1章 初识Java真面目□第2章 动手写“Hello World”□第3章 扎实Java语言基本语法□第4章 理解算法和流程控制□第5章 流行的Java开发工具□第6章 解密面向对象编程□第7章 初探数组第1章 初识Java真面目Java是Sun Microsystems公司推出的跨多平台、可移植性高的一种面向对象的编程语言。
自面世以来,Java以易学易用、功能强大的特点得到了广泛的应用。
使用Java语言可以编写桌面应用程序、Web应用程序、分布式系统、嵌入式系统应用程序等。
Java语言被誉为是最优秀的计算机语言。
本章注意为读者学习Java作准备,学习本章后,相信读者会爱上Java。
知识点:1、Java是Sun Microsystems公司推出的跨多平台、可移植性高的一种面向对象的编程语言。
2、自面世以来,Java以易学易用、功能强大的特点得到了广泛的应用。
3、使用Java语言可以编写桌面应用程序、Web应用程序、分布式系统、嵌入式系统应用程序等。
4、Java语言被誉为是最优秀的计算机语言。
练习:1、Java是 公司推出的 、 的一种 的编程语言。
2、自面世以来,Java以 、 的特点得到了广泛的应用。
3、使用Java语言可以编写 、 、 、 等。
4、 被誉为是最优秀的计算机语言。
通过本章的学习,希望读者可以达到以下的学习目的:□ 掌握Java语言与其他程序设计语言相比所具有的优势。
□ 了解近几年Java在程序设计语言中的排行。
□ 掌握Java语言的发展史。
□ 了解Java的成功案例。
□ 掌握Java的应用领域。
□ 了解Java程序员的成长之路。
1.1 Java简介首先欢迎大家走进Java世界,来体会一下Java语言带给我们的无限魅力。
在任何一项技术学习之前,都需要先了解这项技术,下面笔者将带领大家一起进入Java世界。
1.1.1 什么是Java语言1995年,Sun公司推出了一种极富创造力的、面向对象的程序设计语言——Java,它由Java 之父詹姆斯·戈士林博士设计。
java从入门到精通读书笔记(一)Java从入门到精通笔记入门篇•熟悉Java发展历史•安装JDK、Eclipse•编写Hello World程序•了解Java基本语法•掌握变量、数据类型、运算符、控制语句面向对象编程•了解面向对象的特点•掌握类和对象的概念•学习继承、封装、多态等基本概念•实现类的定义和对象的创建•学习重载和重写集合和IO•学习Java中的容器类•掌握ArrayList、HashSet、HashMap等集合的使用•熟悉Java中的IO操作•了解文件操作、序列化等内容网络编程•掌握socket通信•理解TCP/IP协议•学习HTTP协议•实现客户端和服务器高级Java特性•学习反射、注解等高级特性•掌握多线程编程•熟悉JVM架构•学习异常处理JavaWeb编程•掌握Servlet、JSP等技术•学习MVC框架•熟悉Web应用服务器•学习数据库编程总结•学习Java需要不断积累•遇到问题可以通过搜索引擎解决•不断实践,多写代码•持续学习新技术,保持竞争力入门篇Java语言是面向对象的编程语言,是一种广泛使用的计算机编程语言。
Java语言从1996年开始被发布,现在已被广泛应用于客户端和服务器端程序的开发。
在学习Java之前,需要先了解Java的发展历史。
安装JDK、EclipseJava的开发需要安装JDK和Eclipse。
JDK是Java开发工具包,其中包含了Java编译器等工具。
Eclipse是一款常用的Java IDE(集成开发环境),可以用于编写,调试和运行Java代码。
编写Hello World程序在学习Java语言之前,需要先学会编写Hello World程序,这是一个非常简单的程序,可以帮助初学者快速上手Java编程。
public class HelloWorld {public static void main(String[] args){System.out.println("Hello World!");}}了解Java基本语法Java是一种强类型的语言,需要对数据类型进行明确的定义。