CoreJava笔记—基础部分
- 格式:doc
- 大小:533.50 KB
- 文档页数:49
JA V A的面向对象编程--------课堂笔记面向对象主要针对面向过程。
面向过程的基本单元是函数。
什么是对象:EVERYTHING IS OBJECT(万物皆对象)所有的事物都有两个方面:有什么(属性):用来描述对象。
能够做什么(方法):告诉外界对象有那些功能。
后者以前者为基础。
大的对象的属性也可以是一个对象。
为什么要使用面向对象:首先,面向对象符合人类看待事物的一般规律。
对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。
方法的定义非常重要。
方法有参数,也可能有返回值。
注意区分:对象(本身)、对象的实现者、对象的调用者。
分析对象主要从方法开始。
我们通过类来看待对象,类是对象的抽象。
其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。
对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。
这样才能使每个对象本身做成最好的。
对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。
实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。
可复用性是OOP的基础。
比较面向过程的思想和面向对象的思想:面向过程的思想:由过程、步骤、函数组成,以过程为核心;面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。
面向过程是先有算法,后有数据结构。
面向对象是先有数据结构,然后再有算法。
在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。
开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。
从语法上来看,一个类是一个新的数据类型。
在面向对象编程中,除了简单数据类型,就是对象类型。
定义类的格式:class Student{代码}注意类名中单词的首字母大写。
实例变量:定义在类中但在任何方法之外。
(New出来的均有初值)局部变量:定义在方法之中的变量。
局部变量要先赋值,再进行运算,而实例变量均已经赋初值。
这是局部变量和实例变量的一大区别。
core Java部分笔记 时间: 2008-03-06 作者:佚名编辑:本站点击: 308 [ 评论 ]SDK 软件开发包(JAVA SDK)JDK 软件开发工具包JRE JAVA运行器JVM java虚拟机字节码解释器将字节码解释成机器语言运行 .class文件是字节码文件( 由源代码.java经编译器运行后生成)J2EE 企业级开发J2ME 小程序的开发J2SE 基础搭建开发环境JAVA_HOME 安装路径CLASS_PATH=. 搜索字节码文件的路径PATH=;%JAVA_HOME%/bin 系统搜索命令路径(在window用;%%分隔命令和引用命令)(在linnux下用:$$分隔命令和引用)垃圾回收system.gc()命令是建议JVM回收垃圾在记事本.包java文件中只能有一个public公共类包的作用:1.避免命名冲突2.有助于管理3.有助于访问权限包的命名规则:要小写,以“ .“分隔来创建相应的文件夹关键字package com/gov .公司域名.项目名.模块名package com.tarena.airline.clientpackage com.tarena.sd0707.day01包语句放在程序的第一行有效行javac 文件名.java 编译java文件并生成.class文件java 文件名运行java文件当文本文件中含有包名时的编译运行命令:javac -d . 文件名.java 在当前目录下生成包并编译文件javac -d . MyFirstJava.java 在当前目录下生成包并编译MyFirstJava.java文件javac -d d: MyFirstJava.java 在d盘下生成包并编译MyFirstJava.java文件java 包名.文件名编译包名中的文件java com.tarena.sd0707.day01.MyFirstJavajar命令生成归档(压缩)文件jar cvf 新命名的文件名.jar . 表示在当前目录下将此目录下的所有文件压缩到一个新生成命名的文件中unjar cvf 新命名的文件名.jar . 表示在当前目录下将此目录下的文件解压缩到一个新生成的文件中javadoc 文件名.java 将此文件的文档注释文件提取出注释单行注释//多行注释/* /**/ *.....*/文档注释/** /***/ *.......*/import 包名导入包里面的类定义变量格式:数据类型变量名[=数值]基本数据类型布尔型booolean true/false字符型char整型byteshortintlong实型整型常量八进制数以0开头十六进制以0x开头二进制八进制十六进制十进制有符十进制无符号0000 0000 0000 0x 0 0标示符:包(小写)类(每个单词首字母大写)变量(首字母小写之后每个单词首字母大写)方法(首字母小写之后每个单词首字母大写)常量(全部字母大写)命名规则:由字母.数字,下划线,$美元符不能以数字开头区分大小写不能以关键字命名(所有关键字小写)转义字符换行符\n \t \b退格\“ 双引号\‘ 单引号包引入和包声明:import、package 类和接口的声明:class、interface、extends、implements修饰符:final、static、abstract、public、private、protected、synchronized、transient、native流程控制:if、else、for、while、do、switch、case、break、continue、default、return数据类型:boolean、byte、short、int、long、double、float、char某些数据类型的可选值:true、false、null创建对象:new引用:super、this方法返回类型:void异常处理:try、catch、finally、throw、throws、操作符:instanceof保留字:const、goto预留的关键字注意:所有关键字都小写、标识符不能以关键字命名有符号首位是符号位1负数0 正数无符号的八进制0 十六进制0x二进制八进制十六进制十进制(有符号) 十进制(无符号)0000 0000 0000 0x00 0 01000 0000 0200 0x80 -128 1280111 1111 0177 0x7F 127 127111 11111 0377 0xFF -1 (负数时由二进制数转换而成的补码)2555-----源码---反码----补码5---0000 0101 --------1111 1010---------1111 1011---- -50000 0000 ---------0000 0001----1负数byte short int longbyte b = 5;short s = 10;int i = 250;long length = 230L(如果要定义成long型数字末尾必须加L否则默认成int型);float doubledouble d = 3.14;float f = 2.3F(如果要定义成float型数字末尾必须加F否则默认成double型);charUnicode类型转换由小到大否则要用强制类型转换写代码的基本规范:每一局以分号结束,每个语句以大括号括起来,每个语句块以大括号括起来,中间可以有任意空格。
2010-7-23猛哥推荐技术网站CSDN IBM中国 J道 javaBBSJava语言的好处1、加速开发速度2、一次编写到处运行(跨平台,windows下的ext在linux,unix下不可执行)3、简化开发,降低开发难度4、对外没有指针(JVM是用C++实现的)Java属于复合型:先编译后解释。
JDK的环境变量配置Windows下在我的电脑☞系统属性☞高级☞环境变量配置JAVA_HOME 中配置的是java的安装目录Classpath中配置的是class文件的目录,一般配置,既可以配置jdk中的jar包进去(JDBC会自动配置),类库的路径(lib),”.”一般代表当前目录Path中配置的是可执行命令的路径(bin),path在windows系统变量中是有的,配path 时千万不要将原来的内容删除,在最前面配置。
linux下Java环境的配置Linux:/etc/.profile这是所有用户的全局文件主目录下的.bash_profile 这是当前用户的全局文件到当前用户的目录下,用vi .bash_profile在文件的最后加上以下内容(文件非空) export JAVA_HOME=某个目录(bin和lib的上层);expert PATH=某个目录/bin:$PATH;其中PATH绝对不能错,否则系统会崩溃export CLASSPATH=.:某个目录/lib;保存退出。
二、第一个程序体验步骤:1、vi xx.java2、编辑xx.java文件3、javac编译生成xx.class文件4、如编译通过,用java 包名.类名运行package day01;public class First{public static void main(String[] args){String name="wang";int age=25;System.out.println("my name is :"+name);System.out.println("my age is :"+age);}}编译运行:编译:javac -d . First.java //-d 代表生成目录,.代表当前目录,把目录生成到当前。
Core Java Day012011/8/8====================1 面向物件(OO)1) 什么是Object(对象), Object 本意:东西,是指一个具体事物实例2) 面向对象, 面向客观事物之间的关系.4) OOA面向对象分析/OOD 面向对象设计客人来了(来了一个客人类型的某人)5) 面向对象概念A 类型: 名词概念, 如: 客人, 菜品, 厨师B 引用(变数): 引用具体概念实例的代词, 如: 某人, 特价菜C 对象(东西): 具体概念的个体实例,如:张三丰这个人, 一盘大盘鸡D 行为(方法)E 多态: 行为/引用, 在具体情形下发生了变化的现象一盏灯: 多态的打: 根据宾语发生变化F 封装: 任何对象实例都是尽可能封装, 减少暴露E 继承: 概念的继承关系2 Java 类型, 引用变量与堆对象1)Java 类, 是用来描述事物类型的. 如: 书<图书馆管理系统>中的概念: 书Book书的特征: 书号, 书名, 编号, 作者, 价格...2) 类的声明:public class Book{long id;String name;String isbn; //书号String[] authors; //作者double price;}3) 引用变量与对象的创建过程:A Java的内存管理与分配:栈是一块Java使用内存区域, 使用的方式:LIFO(后来者居上)(last in first out) 堆也是一块Java使用内存区域, 使用方式: 无需随机分配B 局部变量与堆对象空间分配Java 局部变量在栈中分配, 是按照变量的类型分配对象在堆中分配, 按照类的属性(实例变量)分配空间C 变量类型与分配变数分为: 基本类型和引用类型基本类型变量的空间大小: 就是基本类型的空间大小, 值是基本类型的值引用变量的值是一个对象的地址值, 引用变量通过地址引用了一个堆对象.引用类型变量的占用空间大小和值管理是"透明的(不可看见)", 由Java系统管理: 变量占用空间以及值的管理, 都是透明的.4) 对象的属性默认自动初始化的. 自动初始化为"零"值, 引用为null5) 在null引用上调用属性或方法, 会发生运行时异常案例:平面绘图坐标系中的一个点(Point),定义合理的属性坐标是int类型.O+-----------------------------> X||||| . p(x,y)||||Y3 构造器(构造方法) 的作用: 用来描述对象的创建过程的.1)如: 月饼实例的创建, 使用面和馅创建.制作(构造器)月饼模子(类) -----> 月饼(对象)原料(构建参数)点类型--------> 原点坐标(1,2)2) Java中的构造器: 声明在类内部, 方法名与类名一致的方法叫构造方法, 构造方法不能声明返回值类型.构造方法可以包含参数, 参数一般是创建对象实例必须依赖的条件(前提条件).public class Point {int x;int y;/** 构造器*/public Point(int x, int y){this.x = x;this.y = y;}}3) 对象实例化过程:new运算: 创建对象实例1 根据类的属性在堆中分配对象空间.并且自动初始化实例变量2 根据参数类型调用构造器.3 new运算返回对象的引用地址.4) this 关键词this 是对当前对象的引用, 是运行期间当前对象本身.可以使用this明确的访问当前对象的属性或者方法类似于"我".this() 是调用本类的其它构造器, 可以使用构造器的重用,简化代码的实现.* this() 必须写在构造器的第一行!5) 构造方法重载: 参数不一样的构造器案例: Point.java方法签名= 方法名+参数类型列表方法重载:a 方法名一样b 方法参数不一样也可以说: 方法名一样, 方法签名不同的方法6) 默认构造器1 java 类一定有构造器案例: ConstructorDemo.java2 如果类没有声明任何构造器,Javac自动提供一个默认构造器, 无参数默认构造器3 如果提供构造器声明, Javac将不再提供默认构造器.4 对象的方法1) 表示对象的功能, 依赖于对象存在.案例: Point.java如: p1.distance() 和p2.distance()方法是动作,是功能,一般用动词声明.2)方法也经常重载, 重载:方法名一样, 参数不一样重载体现了,功能的多态.重载的方法经常互相重用.作业:1 练习课题案例2 绘制PointDemo.java 的运行内存原理图实现方法public double distabce(int x, int y)3 实现习题案例: 圆类, 矩形和Person类案例1: 圆(Circle), 矩形(Rectangle)圆: 包含圆心和半径两个属性矩形: 包含顶点和宽,高三个属性提供合理的构造器提供方法, 计算当前图形的面积计算当前图形是否包含(contains(Point))指定的点重载方法contains(int x, int y) 图形是否包含坐标x,y 案例2: 定义民政业务类Person定义属性: 编号,名字,性别,年龄, 婚否, 身份证号, 地址, 电话, 伴侣提供方法: 结婚, 参数是另外一个人定义合理的结婚规则结婚结果, 如果成功就合理更新双方的属性婚否和伴侣,返回true, 代表结婚成功, 结婚失败就返回false4 预习: 类的继承Core Java Day022011/8/9====================1 方法签名(方法的识别关键词)方法签名= 方法名+参数类型列表Java 类中不能存在相同方法签名的方法方法重载: 方法名一样, 方法签名不同的方法char[] chs = {'A','B','C'};int[] ary = {'A','B','C'};System.out.println(chs);//ABC// println(char[])System.out.println(ary);//[[@34ADCD//println(Object)System.out.println(ary.toString());// [[@34ADCDSystem.out.println('A');//A // println(char) 打印字符System.out.println(65);//65// println(int) 打印整数打人打牌方法重载就是: 动词的多意现象, 打人, 打牌, 打酱油, 打车洗衣服, 洗手, 洗照片保存联系人, 保存通话记录, 保存访问过的地址save(Contact) save(Log) save(Url)2 java方法参数的传递规则: 基于值的传递, 是变数值的复制,1) 基本类型就是其中值的复制,2) 引用类型是引用值(地址)的复制.案例: ParamaterDemo.java* 变数的值: a 基本类型的值是其本身,b 引用变量的值是一个地址值,是被引用对象的首地址. 为了避免引用参数传递的副作用, 建议一切结果使用返回值带回.3 继承用来表达概念上具体化延续的具体概念.1 * 子类继承父类的属性和方法2 * 构造器不能继承!3 实例化子类,会递归分配所有父类的空间4 子类构造器一定调用父类构造器* 类一定有构造器4 关于继承中的构造器:1 * 子类构造器中, 一定调用父类构造器。
前言------------------------------------------------------------------------------------------------ 1一·基础知识-------------------------------------------------------------------------------------- 2二·定义,关键字和类型 -------------------------------------------------------------------- 2三·表达式和控制流--------------------------------------------------------------------------- 4四·数组------------------------------------------------------------------------------------------ 6五·对象和类------------------------------------------------------------------------------------ 8六·高级语言特性------------------------------------------------------------------------------- 12七·异常----------------------------------------------------------------------------------------- 27八·图形用户接口----------------------------------------------------------------------------- 30九·AWT(Abstract Window Toolkit)事件模型-------------------------------------- 30十·The AWT Component Library ---------------------------------------------------------- 30十一·JFC(Java Foundation Classes) --------------------------------------------------- 30十二·Applets ---------------------------------------------------------------------------------- 30十三·线程Thread ---------------------------------------------------------------------------- 30十四·标准I/O流与文件 -------------------------------------------------------------------- 34十五·网络编程-------------------------------------------------------------------------------- 38前言JAVA特点1) 简单(Java语法是C++语法的一个“纯净”版本);2) 可移植性(一次编译到处运行)3) 面向对象4) 分布式(Java把打开套接字连接等繁琐的网络任务变得非常容易)5) 健壮性(Java编译器会检查出很多其他语言在运行时刻才显示出来的错误;Java采用的指针模型可以消除重写内存和数据崩溃的可能)6) 多线程(多线程编程的简单性是Java成为流行的服务器端开发语言的主要原因之一)7)安全(用Java可以构建防病毒和防篡改的系统)9) 动态(Java可随意增加新的方法以及实例变量,而客户端却不需做任何的更改)10)体系结构中立(字节码与计算机体系结构无关,只要存在运行时系统,可在多种处理器上执行)运行原理先编译*.java文件――――>*.class文件运行*.class ――加载――> JVM(JA V A虚拟机)JAVA目录JRE―――――――运行环境SRC――――――-类库BIN―――――――应用程序一·基础知识配置环境LINUX系统(修改环境配置文件)1 打开shell2 vi .bash_profile3 JA V A_HOME=JA V A目录路径4 PATH=$JA V A_HOME/bin:其他路径5 CLASSPATH=.6 export JA V A_HOME CLASSPATHWindows系统我的电脑属性―――>环境变量设置环境变量:JA V A_HOME=路径PATH = %PATH%;c:\j2sdk1.4.2_05\bin;CLASSPATH = .;Java中基本概念1) 源文件在最顶层只包括一个public类型的类/接口,文件名与类/接口名同并以.java作为文件后缀。
Day 郑春光: tops777 V信chp1.语言基础基本语法、标识符、命名规范、八种基本类型、基本操作符、运算符chp2.选择结构if 、if else、if else if else、switch casechp3.循环控制while、do while、for、break、continuechp4.函数函数的三要素、return的用法chp5.数组一维数组、数组参数、数组返回值、数组增删、扩容、排序、二维数组chp6.面向对象类和对象、实例变量、构造方法、方法重载、引用的概念、this关键字chp7.面向对象三大特性封装、继承、多态、对象创建过程、访问修饰符、super关键字、方法重写、instanceof chp8.三个修饰符static、final、abstractchp9.接口基本语法、接口的作用、解耦合chp10.常用类内部类、Object、包装类、Stringchp11.集合框架Collection、List、Set、Map的接口及其实现类、迭代、Hash 算法与 hashCode 方法、comparable、泛型chp12.异常概念、分类、产生、传递、处理、自定义异常chp13.线程概念、创建、状态转换、数据共享、同步chp14.I/O框架File类、流的分类、基本字节流、基本字符流、字节过滤流、字符过滤流、桥转换、对象序列化chp1.语言基础一、Java语言:1. 由来:I. Sun Microsystem 于1995年推出的Java面向对象的程序设计语言II. 1996年发布1.0版本III. 1999年发布J2SE、J2EE、J2MEIV. 2005年更名为JavaSE、JavaEE、JavaME Java Platform Standard Edition Enterprise MicroV. 2009年被Oracle收购VI. 2011年发布Java 7.0VII.2014年发布Java 8.02. 特点:I. 纯面向对象(使用计算机模拟现实世界,解决现实问题,贴近人类思维模式)。
1.前言..................................................................................................................... 1-3 1.1.JA V A特点1-31.2.运行原理1-41.3.JA V A目录1-42.一·基础知识........................................................................................................ 2-4 2.1.配置环境2-42.2.Java中基本概念2-43.二·定义,关键字和类型................................................................................. 3-5 3.1.注释的三种形式3-53.2.Java代码中的“;”、“{}”、“”3-53.3.标识符3-53.4.数据类型3-53.5.命名规则3-64.三·表达式和控制流......................................................................................... 4-6 4.1.变量和作用域4-64.2.操作符4-64.3.数字类型之间的转换4-74.4.强制类型转换4-74.5.转换的二种类型4-74.6.控制流4-84.7.循环语句4-85.四·数组............................................................................................................. 5-9 5.1.声明数组5-95.2.创建数组5-95.3.初始化数组 5-95.4.多维数组5-95.5.数组拷贝5-106.五·对象和类................................................................................................... 6-10 6.1.面向对象与面向过程6-106.2.对象的概念 6-116.3.成员变量和局部变量6-116.4.成员方法6-126.5.This关键字 6-126.6.访问控制符 6-136.7.构造方法6-136.8.数据和方法的隐藏―――封装6-136.9.方法的重载 6-147.六·高级语言特性.............................................................................................. 7-15 7.1.封装(encapsulation) 7-157.2.继承(inherit) 7-157.2.1.JA V A继承特点 ........................................................................... 7-157.2.2.父类(SuperClass)和子类(SubClass)的关系................... 7-167.2.3.系统构造一个对象的顺序.......................................................... 7-167.3.多态(polymorphism) 7-177.3.1.方法的覆盖(overridding)....................................................... 7-177.3.2.多态的分类.................................................................................. 7-177.3.3.运行时多态的三原则.................................................................. 7-197.3.4.关系运算符:instanceof ............................................................. 7-19 7.4.静态变量,方法和类7-197.5.Singleton模式7-217.6.final关键字 7-227.6.1.final变量不能被改变; ................................................................ 7-227.6.2.final方法不能被改写; ................................................................ 7-227.6.3.final类不能被继承; .................................................................... 7-23 7.7.抽象类7-247.8.接口7-247.9.Object 类7-267.10.封装类7-277.11.内部类7-287.11.1.内部类的分类 ............................................................................. 7-287.11.2.成员内部类 ................................................................................. 7-287.11.3.局部内部类 ................................................................................. 7-297.11.4.静态内部类 ................................................................................. 7-297.11.5.匿名内部类 ................................................................................. 7-30 7.12.集合7-317.12.1.集合接口类层次......................................................................... 7-327.12.2.集合类层次................................................................................. 7-327.12.3.五个最常用的集合类之间的区别和联系................................. 7-337.12.4.比较............................................................................................. 7-357.13.反射7-368.七·异常........................................................................................................... 8-37 8.1.异常的基本概念8-378.2.捕获异常8-378.3.处理异常8-378.4.捕捉多个异常8-388.5.finally 声明 8-388.6.异常调用栈 8-388.7.异常层次8-388.8.一些未检查的异常8-398.9.写你自己的异常8-398.10.抛出你自己的异常8-399.八·图形用户接口........................................................................................... 9-3910.九·AWT(Abstract Window Toolkit)事件模型 .............................. 10-4011.十·The AWT Component Library .......................................................... 11-4112.十一·JFC(Java Foundation Classes)................................................ 12-4113.十二·Applets ......................................................................................... 13-4114.十三·线程Thread ................................................................................. 14-4114.1.线程原理14-4114.2.线程实现的两种形式14-4114.3.线程的生命周期14-4214.4.Thread的方法14-4314.5.共享数据的并发处理14-4314.6.使用互斥锁的注意事项14-4415.十四·标准I/O流与文件 ...................................................................... 15-45 15.1.I/O流基础15-4615.2.流的分类15-4715.3.对文件的操作15-4515.4.处理跨平台性15-4615.5.I/O输入输出15-4816.十五·网络编程...................................................................................... 16-52 16.1.网络基础知识16-5216.2.TCP Socket 16-5316.2.1.建立TCP服务器端.................................................................. 16-5416.2.2.建立TCP客户端...................................................................... 16-54 16.3.建立URL连接16-5516.4.UDP socket 16-5716.4.1.建立UDP 服务器 .................................................................... 16-5816.4.2.建立UDP 客户端 .................................................................... 16-58 1.前言1.1. JAVA特点1) 简单(Java语法是C++语法的一个“纯净”版本);2) 可移植性(一次编译到处运行)3) 面向对象4) 分布式(Java把打开套接字连接等繁琐的网络任务变得非常容易)5) 健壮性(Java编译器会检查出很多其他语言在运行时刻才显示出来的错误;Java采用的指针模型可以消除重写内存和数据崩溃的可能)6) 多线程(多线程编程的简单性是Java成为流行的服务器端开发语言的主要原因之一)7)安全(用Java可以构建防病毒和防篡改的系统)9) 动态(Java可随意增加新的方法以及实例变量,而客户端却不需做任何的更改)10)体系结构中立(字节码与计算机体系结构无关,只要存在运行时系统,可在多种处理器上执行)1.2. 运行原理先编译*.java文件――――>*.class文件运行*.class ――加载――> JVM(JA V A虚拟机)1.3. JAVA目录JRE―――――――运行环境SRC――――――-类库BIN―――――――应用程序2.一·基础知识2.1. 配置环境LINUX系统(修改环境配置文件)1 打开shell2 vi .bash_profile3 JA V A_HOME=JA V A目录路径4 PATH=$JA V A_HOME/bin:其他路径5 CLASSPATH=.6 export JA V A_HOME CLASSPATHWindows系统我的电脑属性―――>环境变量设置环境变量:JA V A_HOME=路径PATH = %PATH%;c:\j2sdk1.4.2_05\bin;CLASSPATH = .;2.2. Java中基本概念1) 源文件在最顶层只包括一个public类型的类/接口,文件名与类/接口名同并以.java作为文件后缀。
2010-7-23猛哥推荐技术网站CSDN IBM中国 J道 javaBBSJava语言的好处1、加速开发速度2、一次编写到处运行(跨平台,windows下的ext在linux,unix下不可执行)3、简化开发,降低开发难度4、对外没有指针(JVM是用C++实现的)Java属于复合型:先编译后解释。
JDK的环境变量配置Windows下在我的电脑☞系统属性☞高级☞环境变量配置JAVA_HOME 中配置的是java的安装目录Classpath中配置的是class文件的目录,一般配置,既可以配置jdk中的jar包进去(JDBC会自动配置),类库的路径(lib),”.”一般代表当前目录Path中配置的是可执行命令的路径(bin),path在windows系统变量中是有的,配path 时千万不要将原来的内容删除,在最前面配置。
linux下Java环境的配置Linux:/etc/.profile这是所有用户的全局文件主目录下的.bash_profile 这是当前用户的全局文件到当前用户的目录下,用vi .bash_profile在文件的最后加上以下内容(文件非空) export JAVA_HOME=某个目录(bin和lib的上层);expert PATH=某个目录/bin:$PATH;其中PATH绝对不能错,否则系统会崩溃export CLASSPATH=.:某个目录/lib;保存退出。
二、第一个程序体验步骤:1、vi xx.java2、编辑xx.java文件3、javac编译生成xx.class文件4、如编译通过,用java 包名.类名运行package day01;public class First{public static void main(String[] args){String name="wang";int age=25;System.out.println("my name is :"+name);System.out.println("my age is :"+age);}}编译运行:编译:javac -d . First.java //-d 代表生成目录,.代表当前目录,把目录生成到当前。
即,自动生成day01包javac First.java //编译在当前目录中运行:java day01.First(xx.java是java源文件,xx.class是字节码文件)类加载类的加载过程类加载器(classsloader)加载字节码到内存,JVM内存数据区将对象状态放置在堆区,各线程使用的变量放在栈区,类的特征放在方法区。
然后进行字节码验证(Byte code verifer),再执行。
字节码验证:验证代码是否符合JVM规范;是否破坏系统完整性;是否堆栈溢出;参数类型是否正确;类型转换是否正确;什么时候类加载:第一次需要使用类信息时加载。
类加载的原则:延迟加载,能不加载就不加载。
触发类加载的几种情况:(1)调用静态方法时会加载静态方法真正所在的类。
例:通过子类调用父类的静态方法时,只会加载父类而不会加载子类。
(2)调用静态初始化代码块时要加载类。
(3)加载子类时必定会先加载父类。
(4)构造对象的时候会加载。
(5)调用静态属性时会加载类。
注:如果静态属性有final修饰时,则不会加载。
new申请JVM通过gc(garbage collection)垃圾回收机制完成内存释放.程序员可以通过ng.System.gc()/ng.Runtime.gc(),建议JVM释放内存(只是建议权).Window 和Linux 下的JVM不同(windows和linux的机器指令不同),但相同的class 文件在两中不同的JVM下运行的结果相同。
Java JDK基本包ng java核心包(重点)Java.awt/javax.swing/java.awt.event GUI图形用户接口Java.applet 小应用程序Java.io 输入输出 网络Java.util 工具包(重点)重要的非JDK包Java.sql/javax.sql 数据库操作(重点)2010-7-24Comments:注释对程序本身没有作用,注释是写给程序员看的three types of comments//comments on one line单行注释从//开始到行结束/*Comments on one or more lines*/多行注释从/*开始到*/之间的是注释部分/**documenting comments*/(recommended)文档化注释,与javadoc结合,生成API文档标识符——给类、方法或变量起名称,汉字也可以做标识符在写代码是要注意中英文切换,注意程序中的 + - “( = 都必须在英文状态下输入编程规范:1、 类名或接口名的每个单词的首字母大写(如 TestString )2、 变量名或方法名第一个单词首母小写,其他单词首字母大写(如 userName )3、 常量的所有字母都大写,不同单词之间用”_”隔开(如 MAX_NUM )4、 包名的所有字母小写,不同单词之间用“.”隔开(如com.tarena.chiao.util ) 关键字:abstract 抽象类 continue 结束本次循环 for new 申请内存 assert 断言 default switch 中 goto packageboolean 布尔型 double 双精度浮点型 if protect break 跳转 do do while implement 继承 public byte 整形 else if/esle import 导入 private case switch enum 枚举 instanceof 判断对象类型 return char 字符型 extends 继承 int short catch 捕获异常 final 最终 interface static 静态 class 类 finally 异常处理 long strictfpconst 保留关键字float 单精度浮点型 native 本地 super 父类 switch synchronization 同步this throw throws transient 对象序列化try void volatile 同步变量 whileconst 和goto 在java 中留而不用,是保留的关键字。
true 、false 和 null 是保留字,但不是关键字,但还是不能做标识符。
数据类型:基本类型为一个值,引用类型包括一个引用和一个对象Java 中的变量必须先声明类型,然后才能使用。
第一次赋值叫变量的初始化。
变量不能在英文双引号中。
Java 变量类型:引用类型:(引用地址+ 对象) 所有类、接口、数组、枚举、标注 char 是16位的Unicode 字符,可以同时具备字符和整数的特性。
Java 默认的整型类型是int 型,默认的浮点型是double 型。
boolean 型值为true 或false ,默认为false 。
不能用1来代表true ,用0表示false 大于号不能用于比较String, String 的相等用equals ()判断。
数字默认位int 类型,两个byte 类型的数运算,要先转化位int 类型,结果为int 类型1、常数在数据类型范围内可以化位任何整形数据2、长度小的数据类型可自动转换位长度大的数据类型(也有可能丢失精度)3、长度大的转换位长度小的必须经过强制类型转换小数默认类型位double类型,小数都是近似值,二进制无法精确表示0.1由于由科学计数法所以float和double没有表示范围,只有精度int和long 都可以自动转换位float或double型byte b1 = (byte)128; //强制类型转换,只是截取了后8位,前面的全部舍弃。
面向对象的概念对象的核心思想是:一切都是对象everything is object(客观世界的一切事物)。
特征:属性;行为:方法面向对象编程:1.看到的所有学生☞对象2.分类☞学生类3.分析特征☞属性(有选择)定义属性类型和变量名4. 分析行为定义方法名/返回类型(方法名前)/参数列表(方法名后()中)返回类型用于传出,参数列表用于传入。
没有返回void,没有参数传入,留下() public class Student{String name;int idint age;//属性//方法public String eat(String cn){System.out.println(cn+"很好吃");return "ok";}public static void main(String[] args){Student s = new Student();//new为构造器,为new Student() 申请内存地址,s引用,//new Student()为对象,Student为类s.id = 1; = "zhangsan";//创建对象String str = s.eat("烩面");//行为执行,“烩面”是传入,str是传出,//eat方法中的所有代码都执行完毕后才能继续执行System.out.println(str);}}2010-7-26内存的分类1、栈————基本类型,地址,后进先出。
引用变量入栈(给以在堆空间的内容的首地址)2、堆----——对象,基本类型,地址3、寄存器——零食变量4、代码段——方法的代码5、池————常驻内存的数据注意:程序一般都会先找栈,再找堆堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。
但缺点是,由于要在运行时动态分配内存,存取速度较慢。
栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。
但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。
栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。
栈有一个很重要的特殊性,就是存在栈中的数据可以共享。
JVM运行时,将内存分为两部分,一部分是栈,一部分是堆。
栈中存放的是方法调用过程中的局部变量或引用,堆中存放的是创建时的对象。
而设计java字符串对象内存实现的时候,在堆中又开辟了一块很小的内存,称之为字符串常量池,专门用来存放特定的字符串对象。