java笔记(必看经典)汇总
Java基础知识点归纳
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基础知识总结(超详细整理)
Java基础知识总结(超详细整理)Java语⾔的特点1.⾯向对象⾯向对象(OOP)就是Java语⾔的基础,也是Java语⾔的重要特性。
⾯向对象的概念:⽣活中的⼀切事物都可以被称之为对象,⽣活中随处可见的事物就是⼀个对象,我们可以将这些事物的状态特征(属性)以及⾏为特征(⽅法)提取并出来,并以固定的形式表⽰。
2.简单好⽤Java语⾔是由C和C++演变⽽来的,它省略了C语⾔中所有的难以理解、容易混淆的特性(⽐如指针),变得更加严谨、简洁、易使⽤。
3.健壮性Java的安全检查机制,将许多程序中的错误扼杀在摇蓝之中。
另外,在Java语⾔中还具备了许多保证程序稳定、健壮的特性(强类型机制、异常处理、垃圾的⾃动收集等),有效地减少了错误,使得Java应⽤程序更加健壮。
4.安全性Java通常被⽤在⽹络环境中,为此,Java提供了⼀个安全机制以防恶意代码的攻击,从⽽可以提⾼系统的安全性。
5.平台⽆关性Java平台⽆关性由Java 虚拟机实现,Java软件可以不受计算机硬件和操作系统的约束⽽在任意计算机环境下正常运⾏。
6.⽀持多线程在C++ 语⾔没有内置的多线程机制,因此必须调⽤操作系统的多线程功能来进⾏多线程程序设计,⽽ Java 语⾔却提供了多线程⽀持。
多线程机制使应⽤程序在同⼀时间并⾏执⾏多项任务,该机制使得程序能够具有更好的交互性、实时性。
7.分布式(⽀持⽹络编程)Java语⾔具有强⼤的、易于使⽤的⽹络能⼒,⾮常适合开发分布式计算的程序。
java中提供了⽹络应⽤编程接⼝(),使得我们可以通过URL、Socket等远程访问对象。
8.编译与解释共存Java语法基础标识符: ⽤来标识类名、对象名、变量名、⽅法名、类型名、数组名、⽂件名的有效字符序列。
合法的标识符:由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,并且⾸字符不能是数字。
不能把java关键字和保留字作为标识符。
标识符对⼤⼩写敏感。
关键字:Java语⾔中已经赋予了特定含义的保留字: const、goto,Java版本中尚未使⽤,但以后版本可能会作为关键字使⽤变量:程序运⾏期间可以被改变的量。
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 。
CoreJava全套详细笔记(心血放出)资料
目录1.原码、反码、补码 (5)1.1.原码 (5)1.2.反码 (5)1.3.补码 (5)1.4.负数的补码转换为十进制数 (6)2.char (6)3.运算符 (6)3.1.移位运算符 (6)3.2.位运算符 (7)3.3.逻辑运算符 (7)4.流程控制 (7)4.1.switch (7)4.2.break和continue (8)5.方法 (8)5.1.构造方法 (8)5.2.方法重载 (8)6.this (9)7.继承 (9)7.1.super (9)7.2.多态(polymorphism) (10)7.3.instanceof (10)8.static (11)9.final (11)10.abstract (12)11.类的加载 (12)11.1.触发类加载的几种情况 (12)11.2.类加载的顺序 (12)12.接口(interface) (13)13.访问控制 (14)14.Object类 (15)14.1.clone() (15)14.1.1.对象克隆过程 (15)14.1.2.浅复制和深复制概念 (16)14.2.finalize() (16)14.3.equals(Object obj) (16)14.4.toString() (16)15.String类及对象池 (16)15.1.String a="hello"; (17)15.2.String c=new String("hello"); (17)16.StringBuffer和StringBuilder (17)17.主方法参数 (18)18.方法的可变长参数 (18)19.包装类 (18)19.1.Number (19)19.2.自动封箱/自动解封(Autoboxing/Unboxing) (19)19.3.对象池 (19)20.内部类 (20)20.1.意义 (20)20.2.四种形式的内部类 (20)20.2.1.静态内部类 (20)20.2.2.成员内部类 (21)20.2.3.局部内部类 (22)20.2.4.匿名内部类 (22)20.3.内部类的应用 (24)21.集合框架(Collection Framework) (24)21.1.Iterator接口和Iterable接口 (25)21.2.Connection接口和Connections类 (25)21.2.1.java.util.Collection (25)21.2.2.java.util.Collections (25)21.3.List(列表)接口 (25)21.3.1.ArrayList (26)21.3.2.LinkedList (26)21.3.3.Vector (26)21.4.Set(集合)接口 (26)21.4.1.HashSet (27)21.4.2.TreeSet (29)21.5.排序的两种办法 (29)parable(可比较的) (29)parator(比较器) (30)21.6.Map (30)21.6.1.HashMap (30)21.6.2.Hashtable (31)21.6.3.Hashtable下的子类Properties类 (31)21.6.4.SortedMap接口下的TreeMap类 (31)22.泛型(Generic) (32)22.1.泛型特点 (32)22.2.通配符 (32)22.2.1.上限通配符: (32)22.2.2.下限通配符 (33)22.2.3.总结: (33)22.3.运用 (34)23.异常 (34)23.1.异常处理基础 (34)23.2.异常的类继承结构 (34)23.3.常见的未检查异常 (35)23.4.throw (35)23.5.自定义异常类 (36)24.反射(Reflection) (37)24.1.反射需要用到的类 (37)ng.Class (37)ng.reflect.Field (38)ng.Package (38)ng.relect.Modifier (38)ng.reflect.Mothed (38)ng.reflect.Array (38)ng.reflect.Constructor (38)24.2.三种获得某个类的Class对象的方法 (38)24.2.1.Class c=Class.forName("类名"); (38)24.2.2.Class c=类名.class; (39)24.2.3.Class c=对象名.getClass(); (39)24.3.所能探查出来的类的特征 (39)24.4.通过反射生成一个类的实例 (39)24.4.1.第一种方法 (40)24.4.2.第二种方法 (40)25.File (40)25.1.构造方法 (40)25.2.重点方法 (41)25.3.目录 (42)26.流 (42)26.1.字节流 (42)26.2.字符流 (44)26.3.节点流(Node Stream): (45)26.4.过滤流(Filter Stream) (45)26.5.ObjectInputStream和ObjectOutputStream (46)26.6.字节流转化成字符流的桥转换器 (48)26.7.文本文件和二进制文件 (50)27.线程 (50)27.1.概念与原理 (50)27.1.1.操作系统中线程和进程的概念 (50)27.1.2.Java中的线程 (51)27.1.3.Java中的线程模型 (51)27.1.4.一些常见问题 (51)27.2.线程状态的转换 (52)27.2.1.线程的七种状态 (52)27.2.2.阻止线程执行 (54)27.3.线程的同步与锁 (55)27.3.1.同步和锁定 (55)27.3.2.静态方法同步 (60)27.3.3.如果线程不能获得锁会怎么样 (60)27.3.4.何时需要同步 (61)27.3.5.线程安全类 (61)27.3.6.线程死锁 (62)27.3.7.线程同步小结 (63)27.4.线程的交互 (64)27.4.1.线程交互的基础知识 (64)27.4.2.多个线程在等待一个对象锁时候使用notifyAll() (66)27.5.守护线程(后台服务线程) (67)27.6.并发协作-生产者消费者模型 (68)27.7.volatile关键字 (68)28.网络编程 (69)28.1.TCP Socket编程 (69)28.1.1.ServerSocket (70)28.1.2.Socket (70)28.2.UDP Socket编程 (71)28.2.1.DatagramSocket (71)28.2.2.DatagramPacket (71)1.原码、反码、补码1.1. 原码将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。
JAVA学习完整版详细笔记
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中设置的路径下找。
java的全部知识点总结
java的全部知识点总结Java是一种广泛使用的高级编程语言,其设计目的是使应用程序跨平台运行。
Java已经成为最受欢迎的编程语言之一,被广泛应用于企业级软件开发、Web应用程序和移动应用程序开发等领域。
本文将对Java的各种知识点进行总结,包括基础知识、面向对象编程、异常处理、集合框架、多线程、网络编程、IO流、反射等方面。
基础知识Java是一种面向对象的编程语言,它的基础知识包括数据类型、运算符、流程控制、方法和数组等。
数据类型:Java的数据类型包括基本数据类型和引用数据类型。
基本数据类型包括整型、浮点型、字符型和布尔型,引用数据类型包括类、接口、数组等。
运算符:Java的运算符包括算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符等。
流程控制:Java的流程控制包括if语句、switch语句、while循环、do-while循环、for循环和分支语句等。
方法:Java的方法是一组执行特定任务的代码块,可以被其他代码调用,有返回值和参数等特点。
数组:Java的数组是一种存储相同类型数据的集合,可以存储基本数据类型或者引用数据类型。
面向对象编程面向对象编程是Java的核心特性之一,其基本知识点包括类与对象、封装、继承、多态、接口和抽象类等。
类与对象:类是Java中的一种重要机制,是一种数据结构和行为的模板。
对象是类的实例化结果,拥有类的属性和行为。
封装:封装是指将对象的属性和行为封装在一起,对外部隐藏对象的实现细节。
继承:继承是指一个类可以派生出其他类,派生类可以继承基类的属性和行为,并可以添加新的属性和行为。
多态:多态是指多个类可以使用同一行为名称,但具体行为的实现可以由不同类覆盖实现。
接口:接口是Java中一种重要的机制,定义了一组与实现无关的方法,被不同的类实现。
抽象类:抽象类是一种包含抽象方法的类,不能被直接实例化,需要被派生类实现其抽象方法。
异常处理异常处理是Java中的重要特性,用于处理程序运行时的错误和异常。
jAVA基础知识点汇总(附带实例)
结果为: 结果为:
在 for 循环中,经常用的 2 中跳离循环语句的方法:break 和 continue;break 的作用:终止循环,离开循环体;continue 的作用:跳出本次循环,去执行下一次循环。 13.运算符(都是以二进制的形式比较的) ^的运算方法是相同为 0,相反为 1; 例:1^2:1:001 2:010 3 :011 |的运算方法是只要有 1 就为 1; 1|2:1:001 2:010 3:011 &的运算方法是只要有 0 就为 0; 1&2:1:001 2:010 0:000
(2).对象的使用:对象名.属性名;对象名.方法名(); (3).对象的比较("=="与 equals()方法的运用)
例 1. "=="运算符用与比较
运行结果为: 例 2.equals 方法用与比较
运行结果为: 例 3.为某一普通类创建两个对象进行比较
结果为:不是同一个人
Hale Waihona Puke 总结:string 是一个特殊的类,当为该类创建对象时,并进 行对象比较时,“==”用于比较两个对象的内存地址,而 equals()方法则比较的是两个对象的内容是否相等。当为一个 普通的类创建两个对象进行比较时,"equals()"的作用和"==" 作用相同,都是进行地址比较。这是因为在进行对象比较时, 默认的调用了 object 类中的 equals()方法。 (4).构造方法的使用 例 1:
结果为:
也就是说:如果整数与字符串相加,整数会自动向字符串类
型转化;如果整数与字符相加,字符会先转化为 ASCII 码, 后再与整数相加。
注:a~z:97~122
A~Z:65~90
JAVA笔记-基础语法
JAVA笔记-基础语法1、第一个Java程序1public class HelloWorld {2public static void main(String[] args){3 System.out.println("Hello World!I am CheeseZH!");4 }5 }写Java程序通常都是由定义「类别」开始,"class"是Java 用来定义类别的关键词,类别的名称是HelloWorld,这与您所编辑的档案(HelloWorld.java)主档名必须相同,在编写Java程序时,一个档案中可撰写数个类别,但是只能有一个"public"类别,而且档案主档名必须与这个"public"类别的名称相同。
接下来看看main() 方法(Method),它是Java程序的「进入点」(Entry point),程序的执行是由进入点开始的:1)、它一定是个"public"成员(Member),这样它才可以被呼叫;2)、它不需要产生对象就要能被执行,所以它必须是个"static"成员。
"void"表示这个方法执行结束后不传回任何值,Java程序的主方法不需传回任何值,所以一律使用void;main()是Java程序的主方法名称,其中"String[] args"是命令列自变量(Command line argument),可以在执行程序时取得使用者指定的相关参数,目前虽然您不使用,但仍要撰写它,这是规定。
System.out.println("Hello World!I am CheeseZH!");在这个程序中使用了ng套件下的System类别,使用它的公开成员out 对象,它是一个PrintStream 对象,您使用了它所提供的println()方法,将当中指定的字符串(String)"Hello World!I am CheeseZH!"输出至Console 上。
Java知识点整理
Java知识点整理第⼀章1、Java中没有指针、结构和类型定义等概念,没有全局变量,没有#include和#define等预处理器,也没有多重继承的机制。
只允许单重继承。
在Java中,class定义的⼤括号之后没有分隔符“;”。
2、Java源代码使⽤的是Unicode码,⽽不是ASCⅡ码,Unicode码是⽤16位⼆进制表⽰的⼀个字符。
Java编译器将Java程序编译成⼆进制代码。
3、编译后的Java程序指令并不直接在硬件系统的CPU上执⾏,⽽是由Java虚拟机(JVM)执⾏。
JVM使⽤的代码存储在.class⽂件中。
JVM的代码格式为压缩的字节码。
4、三级代码安全检查,即验证、分析和跟踪监测。
5、字节码校验器要对程序中的代码进⾏四趟扫描。
6、Java程序分为两种:(1)Java应⽤程序(Java Application);(2)Java⼩应⽤程序(Java Applet),或叫Java⼩程序。
7、如果⽅法不是静态(static)的,则必须先创建类的实例,然后调⽤实例的⽅法。
8、String args[]表⽰命令⾏参数。
9、Java规定,如果.java⽂件中包含⼀个公有类,则存储的⽂件名要与该共有类的类名⼀致。
※可以在所有类⾥都写上main ⽅法,给程序提供N多个⼊⼝,但是最后运⾏程序的时候也只能从其中的⼀个⼊⼝进去,这就是main 的作⽤( 程序⼊⼝)。
9、Java规定,在⼀个源⽂件中,最多只能定义⼀个公有类。
10、包说明必须出现在类说明和引⼊语句之前,引⼊语句必须出现在所有的类说明之前。
※只有package语句是零个或⼀个,import语句、类定义、接⼝定义为零个或多个。
11、Java的核⼼API共有32个包。
第⼆章1、Java中的注释有三种:(1)//在⼀⾏的注释;(2)/*在⼀⾏或多⾏的注释*/(3)/**⽂档注释*/2、在Java语⾔中,标识符是由字母、下划线、美元符($)开头,有字母、下划线、美元符和数字组成的字符串。
JAVA学习经典重点笔记(保证终生受用)word版本
(1)一个字符串就是一个String的匿名对象;String的内容一旦声明则无法改变。
(2)This()必须放在构造方法的首行。
在使用this调用构造方法的时候至少有一个构造方法是没有使用this()调用的,而次构造方法将作为调用的出口,一般这个出口都会使用无参构造函数。
This有一个最重要的概念——表示当前对象。
当前正在调用类中方法的对象,成为当前对象。
所以this.属性就表示当前对象的属性。
(3)Static的方法只能调用static的属性和方法,不能调用非static的属性或方法。
因为静态属性和方法可以在没有实例化对象的时候调用,而类中的普通方法和普通属性,肯定只有在对象实例化之后才有可能调用。
(4)Main(String args[] )用于接收参数,就是java 类名参数1 参数2 参数3★构造方法私有化后,则就成单例问题了,单例声明:private static 类名对象名=new 类名(5)直接在类中定义的代码块称为构造块。
构造块会重复调用多次,构造块会优先于构造方法执行。
使用static关键词声明的代码块称为静态块,静态块优先于主方法执行,静态块用于对静态属性初始化,优先于构造块执行,而且只执行一次。
(6)内部类的唯一优点:在于可以方便的访问外部类中的私有成员。
如果要在外部直接使用内部类的实例化对象:外部类.内部类内部类对象=外部类实例.new 内部类实例()一个内部类如果使用static关键字声明的话,则此内部类就将成为外部类,可以直接通过外部类.内部类的形式访问。
如:Outer.Inner in=new Outer.Inner();(7)在方法中定义的内部类,可以直接访问外部类中的各个成员,但如果要访问方法中的参数,则在参数上要使用final关键字声明。
(8)链表:对于单向链表,主要是传递的引用数据类型,开发的意义不大,面试的意义很大。
主要是应用内部类。
(李兴华JAVA培训14课)(9)子类一定会调用到父类的构造方法,默认是有一个super()调用父类的无参构造方法。
JAVA常用知识点(必备)
JAVA常⽤知识点(必备)1、JAVA的跨平台原理java通过不同系统,位数,版本的虚拟机来屏蔽不同的指令集差异,对外提供统⼀的接⼝(java api)2、JAVA特性封装:属性私有化,对外提供⽅法(set/get)继承:在⼀个现有类基础上,修改或新增新的内容多态:引⽤变量指向的具体类型和⽅法在运⾏时才确定3、String、StringBuffer、StringBuiler区别String是内容不可变的字符串,StringBuffer、StringBuiler是内容可变的字符串StringBuffer是线程安全的、StringBuiler是⾮线程安全的4、集合(1)集合分两种,值集合和键值集合值集合主要是List和Set,都继承了Collection接⼝键值集合主要是Map(2)List:有序,可重复分为ArrayLIst、LinkedList和VectorArrayList底层是数组实现,为连续的内存空间,所以查找速度快,增删速度慢LinkedList底层是链表实现,不连续的内存空间,所以增删速度快,查找速度慢Vector底层是数组,线程安全(3)Set:⽆序,不可重复重写equals和hashcode⽅法,因为在add,会先⽤equals判断值是否相等,再判断是否具有相同的hash值(属性相同的对象被看作同⼀个对象)(4)Map:键值对hashMap:可以存储空值,⾮线程安全。
put存储键值对的时候,会调⽤hashcode⽅法返回⼀个hashcode值,找到bucket位置存储Entry对象,使⽤get(key)获取对象解决hashmap⾮线程安全问题:因为hashmap内部类似链表结构,在多线程环境下有可能成环,解决⽅法ConcurrentHashMap(把⼀个Map分成N个segment,分别加锁,保证线程安全)。
hashtable:线程安全5、拷贝⽂件思路:源⽂件、源地址、⽬标⽂件、⽬标地址缓存输⼊输出流(FileInputStream、FileOutputStream)改进:FileChannels(transferTo),适合拷贝⼤⽂件6、线程池为了避免重复的创建和销毁线程,让创建的线程进⾏复⽤,存放空闲线程的⼀个池⼦Executors.NewFixedThreadPool()创建⼀个固定⼤⼩的线程池7、存储过程的好处(1)预编译,只在创建时进⾏编译,提⾼数据库执⾏速度(2)⽐较复杂的业务需要多条sql,提⾼⽹络传输速度(3)安全性8、ajax参数url:请求地址type:get/postdata:请求数据dataType:服务器返回数据类型(json、text、xml、html)success:成功调⽤函数erroe:失败调⽤函数9、Struts2执⾏流程(1)服务端接收客户端请求,经过⼀系列的过滤器,到达核⼼过滤器(StrutsPrepareAndExecuteFilter)(2)StrutsPrepareAndExecuteFilter通过ActionMapper将请求交给ActionProxy代理(3)ActionProxy通过Configeration Manager找到配置⽂件,找到需要调⽤的Action(4)创建⼀个ActionInvocation实例,调⽤Action⽅法,调⽤前后还会执⾏相关的拦截器(5)通过结果集的name返回对应的结果集,对浏览器进⾏响应10、Struts2拦截器通过动态配置,在action前后加⼊⼀些相关的逻辑包括:登录判断,未登录跳转到登录页⾯⽤户权限判断,没有权限给出判断信息操作⽇志11、SpringMvc⼯作流程(1)⽤户向服务器发起请求,请求交给前端控制器DispatcherServlet处理(2)DispatcherServlet对请求的URL进⾏解析,得到URI,调⽤HandlerMapping获得Handler配置的所有相关对象(3)DispatcherServlet根据获得的Handler,选择⼀个合适的HandlerAdapter,执⾏Handler(4)Handler执⾏完成后,返回⼀个ModelAndView对象(5)DispatcherServlet根据返回的ModelAndView,选择⼀个合适的视图解析器,返回客户端12、Struts1⼯作流程(1)服务段接收到客户端请求,交给ActionServlet处理(2)拦截所有.do请求,将客户请求封装到actionForm⾥⾯,到配置⽂件去匹配对应的action(主要有⼏个属性,name对应封装的actionform,input匹配拦截的路径和⽅法,type匹配action的实现类)(3)action处理完返回actionforward对象,根据配置⽂件找到对应页⾯返回给客户端13、SpringMvc和Struts2区别(1)核⼼控制器不同,SpringMvc是Servlet,Struts2是filter(2)控制器实例不同,SpringMvc是基于⽅法级别,只会有⼀个实例,线程不安全,Struts2基于对象,针对不同的请求,产⽣不同的ActionInvaction实例(3)参数传递:Struts2是通过值栈传递,SpringMvc是通过⽅法的参数传递(4)intercepter拦截器:Struts2有⾃⼰的拦截器,SpringMvc⽤aop实现(5)SpringMvc处理ajax请求直接返回数据@ResponseBody14、Struts1和Struts2的区别(1)因为forward都是返回到具体的jsp页⾯,每⼀个forward对应配置⽂件的⼀个forward标签,每⼀次改动配置⽂件都要重启Tomcat(2)struts1⾥的action是单例模式的,供多个请求共享,所以不是线程安全的。
Java基础知识笔记总结
Java知识——精华总结一、java概述与基础知识 (6)二、方法与数组 (19)三、面向对象(1) (28)四、面向对象(2) (39)五、异常处理和常用类 (59)六、线程技术 (77)七、集合框架(1) (93)八、集合框架(2) (110)九、IO操作(1) (123)十、IO文件操作(2) (135)十一、网络编程 (146)十二、反射机制 (162)十三、GUI界面 (181)十四、Java高新技术(1) (197)十五、Java高新技术(2) (205)十六、Java高新技术(3) (215)十七、面试题之交通灯管理系统 (233)十八、面试题之银行业务系统 (241)一、java概述与基础知识 (6)1、何为编程? (6)2、Java语言概述,历史、特点 (6)3、什么是跨平台性?原理是什么?JVM (6)4、Jre和Jdk的区别? (7)5、java虚拟机JVM (7)6、Java程序运行机制 (7)7、学习java注意的地方 (8)8、Java语法格式 (8)9、代码注释:单行//,多行/* */,文档注释/** */ (8)10、Java中的标识符 (8)11、java中的常量和变量 (9)12、Java成员变量和局部变量 (9)14、基本数据类型转换之向上转型和向下转换 (11)15、Java的运算符 (12)16、表达式和三目运算符 (12)17、程序流程控制 (13)18、三大循环结构: (15)19、嵌套循环与流程控制 (17)二、方法与数组 (19)1、什么是方法(Method)? (19)2、Java中方法的格式: (19)3、方法里的属性 (20)4、方法特点 (20)5、什么是方法的重载(Overload)? (21)6、可变参数 (22)7、数组简介: (22)8、一维数组的声明与初始化: (23)9、数组的使用: (24)10、分配内存空间 (25)11、二维数组: (26)12、操作数组的工具类-Arrays (27)13、Java5新特性对数组的支持: (28)三、面向对象(1) (28)1、什么叫面向对象? (28)2、类 (29)3、构造方法 (30)4、static关键字 (31)5、匿名对象 (32)6、this关键字 (32)7、面向对象之封装 (32)8、访问修饰符 (33)9、类的设计分析 (34)10、面向对象之继承 (34)11、子类访问父类和方法覆写 (35)12、super关键字和调用父类构造方法 (36)13、面向对象之多态 (37)14、引用变量类型转换 (38)四、面向对象(2) (39)1、基本数据类型的包装类 (39)2、基本数据类型和包装类相互转换 (40)3、基本类型和String之间的转换 (41)4、Object类 (41)5、代码块 (42)6、构造方法的私有化 (43)7、Singleton模式(单例模式) 饿汉式和懒汉式 (44)8、final 关键字 (46)9、抽象类 (46)10、抽象类的体现-模板模式 (48)11、接口(interface) (50)12、接口的使用 (51)13、面向接口编程之制定标准和简单工厂模式 (52)14、面向接口编程之适配器模式 (54)15、接口和抽象类的比较 (55)16、匿名内部类 (56)17、枚举类 (56)五、异常处理和常用类 (59)1、异常 (59)2、异常处理格式 (60)3、多异常处理 (60)4、异常的分类 (61)5、声明异常(throws) (62)6、throw (62)8、throw和catch同时使用 (64)9、常用类 (64)10、String方法 (66)11、StringBuffer 与StringBuilder (68)12、Math和Random和UUID (71)13、Date和Calendar (73)14、System (76)六、线程技术 (77)1、进程和线程 (77)2、创建线程方式 (78)3、两种进程创建方式比较 (79)4、线程的生命周期 (81)5、控制线程 (82)6、多线程安全问题 (84)7、多线程安全问题的解决方法 (85)8、线程通信 (89)七、集合框架(1) (93)1、集合类& 容器 (93)2、Collection接口 (94)3、Iterator接口 (94)4、集合遍历输出方式 (95)6、TreeSet (99)7、List接口 (103)8、List接口中常用类 (104)9、Map接口 (108)八、集合框架(2) (110)1、Collections类 (111)2、Arrays (112)3、泛型(Generic) (113)5、声明多个泛型类型和通配符 (118)6、泛型的上限与下限 (119)7、泛型接口和方法 (121)8、泛型的嵌套(map例子) (122)九、IO操作(1) (123)1、IO的概述和File方法 (123)2、递归(Recursion) (125)3、文件过滤器java.io.FilenameFilter (126)4、流 (127)5、操作流的步骤(重点) (128)6、字节流和字符流 (129)7、文件拷贝 (131)8、字节→字符转换流 (134)9、自动关闭资源的try语句 (134)十、IO文件操作(2) (135)1、内存操作流 (135)2、打印流 (137)3、格式化输出 (139)4、标准流 (140)5、Scanner(简单文本扫描器) (141)6、缓冲流 (144)7、合并流(SequenceInputStream) (145)十一、网络编程 (146)1、什么是网络编程? (146)2、网络通讯要素 (147)3、TCP和UDP的联系和用途 (147)4、InetAddress与Socket (148)5、UDP传输 (149)6、TCP传输 (153)8、小例子 (159)十二、反射机制 (162)1、反射的概念 (162)2、获得Class对象 (163)3、九个预定义Class对象 (164)4、利用Class获取类的属性信息 (165)5、Class中得到构造方法Constructor、方法Method、字段Field (167)6、利用反射创建对象 (172)7、使用反射调用方法 (175)8、使用反射调用可变参数方法 (176)9、使用反射操作字段 (178)10、反射和泛型-反射来获取泛型信息 (179)十三、GUI界面 (181)1、GUI(图形用户界面) (181)3、事件监听机制组成 (183)4、Dialog (190)5、菜单 (193)十四、Java高新技术(1) (197)1、Eclipse的使用技巧 (197)2、静态导入(1.5特性,好处是不用写类名) (199)3、可变参数 (200)5、基本数据类型的自动拆箱与装箱 (201)6、枚举 (201)7、反射实现框架功能 (203)十五、Java高新技术(2) (205)1、内省了解JavaBean (205)2、内省综合案例和Beanutils工具包 (205)3、注解(Annotation) (208)4、泛型 (211)十六、Java高新技术(3) (215)1、类加载器 (215)2、类加载器的委托机制 (216)3、一个类加载器的高级问题分析 (220)4、代理的概念与作用 (220)5、动态代理技术 (222)6、分析JVM动态生成的类 (222)8、实现类似spring的可配置的AOP框架 (229)十七、面试题之交通灯管理系统 (233)1、面向对象的分析与设计 (234)2、Road类的编写 (234)3、Lamp类的编写 (236)4、LampController类的编写 (239)5、MainClass类的编写 (239)十八、面试题之银行业务系统 (241)1、需求 (241)2、需求分析 (242)3、NumberManager类 (242)4、NumberMachine类 (243)5、CustomerType枚举类 (244)6、ServiceWindow类 (244)7、MainClass类与Constants类 (248)一、java概述与基础知识1、何为编程?编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
java各详细总结知识点
java各详细总结知识点一、Java语法1. 数据类型Java中的数据类型分为基本数据类型和引用数据类型。
基本数据类型包括整型,浮点型,字符型和布尔型。
引用数据类型包括类、接口、数组等。
2. 变量在Java中,变量是用来存储数据的容器。
它们可以存储不同类型的数据,例如整数、浮点数、字符等。
变量分为局部变量和成员变量。
3. 运算符Java中的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。
这些运算符可以实现数据的计算和比较。
4. 控制流Java中的控制流包括顺序结构、选择结构和循环结构。
通过控制流语句,程序可以根据条件执行不同的代码块,实现不同的功能。
5. 方法方法是Java中用来组织和重用代码的一种机制。
它可以细化程序的逻辑结构,并提高代码的可读性和可维护性。
6. 数组数组是一种用来存储多个相同类型数据的容器。
在Java中,数组可以是一维的、二维的甚至多维的。
使用数组可以方便地管理大量数据。
7. 字符串在Java中,字符串是一种特殊的对象类型。
Java提供了丰富的字符串处理方法,例如字符串连接、子字符串提取、字符串比较等。
8. 输入输出在Java中,通过输入输出流可以实现与外部设备的交互。
Java提供了丰富的输入输出类和方法,可以实现文件的读写、网络通信等功能。
二、面向对象编程1. 类和对象在Java中,所有的代码逻辑都是围绕类和对象展开的。
类是一种模板,描述了对象的属性和行为。
对象是类的实例,可以根据类创建多个对象。
2. 封装封装是面向对象编程的核心思想之一。
通过封装,可以将数据和行为封装在一个对象中,避免外部直接访问对象的数据。
3. 继承继承是一种代码复用的机制,可以让子类继承父类的属性和方法。
通过继承,可以实现类与类之间的层次关系,提高代码的重用性和扩展性。
4. 多态多态是面向对象编程的另一个核心概念。
通过多态,可以使不同类的对象对同一消息作出不同的响应。
多态性可以提高代码的灵活性和可扩展性。
java初中高级 笔记,很全,很详细。
8、java 中的注释, 单行注释 //...... 多行注释 /* .......*/ 文档注释/** ........<p>(换行标签)*/,用 javadoc 命令可以根据原码中的文档注释生成注释
父类。 java 语言的开发效率高,但执行效率低。(相当于 c++的 55%)
(3)纯面向对象的语言 --- 都要放在类中 (4)垃圾回收机制 --- 自动垃圾收集,永远不会出现内存泄露的问题
4、虚拟机
java 语言是先编译后解释,java 源码是通过编译生成一种特殊的.class 的中间字节码文件 , 然后再由 JVM 进行解释运行。
6、数组 内存中的连续空间 数组是一次性定义多个相同类型的变量 Java 中一个数组就是一个对象,有属性,没有方法
int[] a; //定义一个数组,变量名就是指向数组首地址的指针 a=new int[10]; //为数组分配空间 a.length; //得到数组的长度 数组创建后有初始值:数字类型为 0 布尔类型为 false 引用类型为 null String[] 默认值 null
if(a<3&(b=a)==0) b 赋值 if(a<3&&(b=a)==0) b 不赋值 4) || 短路或,前面为真,表达式为真,后面的操作不会进行, | 会对所有条件进行判 断。 5)instanceof,是用于判断一个对象是否属于某个类型 6)java 中的求余运算符“%”可以对两个实型变量求余 5%2=1
文档(html 格式)。文档注释中可以使用 html 标签。 javadoc -d 路径(指定注释文档的保存路径) xxx.java 文档注释一般写在类定义之前,方法之前,属性之前。 在文档注释中可以用 @author 表示程序的作者,@version 表示程序的版本,前两个注
(完整版)最全的java学习笔记(必看)
Java学习笔记目录一、Java技术基础 .........................................................................................................................1.1编程语言...............................................................................................................................1.2 Java的特点...........................................................................................................................1.3 Java开发环境.......................................................................................................................1.4 Java开发环境配置...............................................................................................................1.5 Linux命令与相关知识 ........................................................................................................1.6 Eclipse/Myeclipse程序结构 ................................................................................................二、Java语言基础 .........................................................................................................................2.1基础语言要素.......................................................................................................................2.2八种基本数据类型...............................................................................................................2.3常量和变量...........................................................................................................................2.4运算符与表达式...................................................................................................................2.5编程风格...............................................................................................................................2.6流程控制语句.......................................................................................................................2.7数组.......................................................................................................................................2.8字符串...................................................................................................................................2.9方法三要素...........................................................................................................................2.10插入排序.............................................................................................................................2.11冒泡排序.............................................................................................................................2.12冒泡排序:轻气泡上浮的方式.........................................................................................2.13二分法查找.........................................................................................................................2.14 Java系统API方法调用 ....................................................................................................2.15二进制基础.........................................................................................................................2.16 Java基础其他注意事项.....................................................................................................三、面向对象 .................................................................................................................................3.1类...........................................................................................................................................3.2对象.......................................................................................................................................3.3包...........................................................................................................................................3.4方法及其调用.......................................................................................................................3.5引用.......................................................................................................................................3.6访问控制(封装)...............................................................................................................3.7构造器...................................................................................................................................3.8 super()、super.和this()、this........................................................................................3.9重载和重写...........................................................................................................................3.10继承.....................................................................................................................................3.11 static ....................................................................................................................................3.12 final .....................................................................................................................................3.14抽象类.................................................................................................................................3.15接口.....................................................................................................................................3.16内部类.................................................................................................................................3.17匿名类.................................................................................................................................3.18二维数组和对象数组.........................................................................................................3.19其他注意事项.....................................................................................................................四、Java SE核心I .........................................................................................................................4.1 Object类...............................................................................................................................4.2 String类................................................................................................................................4.3 StringUtils类 ........................................................................................................................4.4 StringBuilder类....................................................................................................................4.5正则表达式...........................................................................................................................4.6 Date类..................................................................................................................................4.7 Calendar类 ...........................................................................................................................4.8 SimpleDateFormat类 ...........................................................................................................4.9 DateFormat类.......................................................................................................................4.10包装类.................................................................................................................................4.11 BigDecimal类 ....................................................................................................................4.12 BigInteger类.......................................................................................................................4.13 Collection集合框架 ...........................................................................................................4.14 List集合的实现类ArrayList和LinkedList ......................................................................4.15 Iterator迭代器....................................................................................................................4.16泛型.....................................................................................................................................4.17增强型for循环..................................................................................................................4.18 List高级-数据结构:Queue队列 ..................................................................................4.19 List高级-数据结构:Deque栈 ......................................................................................4.20 Set集合的实现类HashSet ................................................................................................4.21 Map集合的实现类HashMap ............................................................................................4.22单例模式和模版方法模式.................................................................................................五、Java SE核心II ........................................................................................................................5.1 Java异常处理机制...............................................................................................................5.2 File文件类 ...........................................................................................................................5.3 RandomAccessFile类...........................................................................................................5.4基本流:FIS和FOS ............................................................................................................5.5缓冲字节高级流:BIS和BOS ...........................................................................................5.6基本数据类型高级流:DIS和DOS ..................................................................................5.7字符高级流:ISR和OSW ..................................................................................................5.8缓冲字符高级流:BR和BW .............................................................................................5.9文件字符高级流:FR和FW ..............................................................................................5.10 PrintWriter ...........................................................................................................................5.11对象序列化.........................................................................................................................5.12 Thread线程类及多线程 ....................................................................................................5.13 Socket网络编程.................................................................................................................5.15双缓冲队列.........................................................................................................................Java技术基础1.1编程语言机器语言:0 1 在硬件直接执行汇编语言:助记符高级语言:(Java运行比C/C++慢)1)面向过程的高级语言:程序设计的基本单位为函数,如:C/C++语言。
Java基础知识笔记(含代码举例)
Java基础知识笔记(含代码举例)⽂章同步:知乎:简书:博客园:⼀、注释、标识符、关键字注释平时我们写的代码量较⼩时,可以看的懂。
但是⼀旦结构复杂起来,我们就需要注释了注释平不会被执⾏,是给我们程序员看的书写注释是⼀个⾮常好的习惯java中有三种注释:单⾏注释 // 注释部分多⾏注释 /* 注释部分*/⽂档注释//有趣的代码注释:/*_(\_/),((((^`\(((( (6 \,((((( , \,,,_ ,((((( /"._ ,`,((((\\ ,... ,(((( / `-.-'))) ;' `"'"'""(((( (((( / ((( \)) | |(( | . ' |)) \ _ ' `t ,.')( | y;- -,-""'"-.\ \/) / ./ ) / `\ \|./ ( ( / /'|| \\ //'||| \\ _//'|||| )) |_/ ||\_\ |_/ ||`'" \_\`'"*/关键字abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。
java基础知识大全(必看经典)
第一讲 Java语言入门1.1 Java的特点1.1.1面向对象:•与C++相比,JAVA是纯的面向对象的语言C++为了向下兼容C,保留了很多C里面的特性,而C,众所周知是面向过程的语言,这就使C++成为一个"混血儿"。
而JAVA语法中取消了C++里为兼容C所保留的特性,如取消了头文件、指针算法、结构、单元等。
1.1.2可移植(平台无关性):•生成中间字节码指令与其他编程语言不同,Java并不生成可执行文件(.exe文件),而是生成一种中间字节码文件(.class文件)。
任何操作系统,只要装有Java虚拟机(JVM),就可以解释并执行这个中间字节码文件。
这正是Java实现可移植的机制。
•原始数据类型存储方法固定,避开移植时的问题Java的原始数据类型的大小是固定的。
比如,在任何机器上,整型都是32位,而C++里整型是依赖于目标机器的,对16位处理器(比如8086),整数用两个字节表示;在像Sun SPARC这样的32位处理器中,整数用4个字节表示。
在Intel Pentium处理器上,整数类型由具体的操作系统决定:对于DOS和Win32来说,整数是2个字节;对于Windows 9x 、NT和2000,整数是4个字节。
当然,使整数类型平台无关之后,性能必然有所下降,但就Java来说,这个代价是值得的。
Java的字符串,则采用标准的Unicode格式保存。
可以说,没有这个特性,Java的可移植性也不可能实现。
1.1.3简单•JAVA在语法上与C++类似JAVA的语法与C++很接近,有过C或者C++编程经验的程序员很容易就可以学会JAVA语法;•取消了C++的一些复杂而低效的特性比如:用接口技术代替了C++的多重继承。
C++中,一个类允许有多个超类,这个特性叫做"多重继承",多重继承使得编译器非常复杂且效率不高;JAVA的类只允许有一个超类,而用接口(Interface)技术实现与C++的多继承相类似的功能其它被取消的特性包括:虚拟基础类、运算符过载等•JAVA的基本解释器和类支持模块大概仅40K即使加入基本的标准库和支持线程的模块,也才220K左右。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA的面向对象编程--------课堂笔记面向对象主要针对面向过程。
面向过程的基本单元是函数。
什么是对象:EVERYTHING IS OBJECT(万物皆对象)所有的事物都有两个方面:有什么(属性):用来描述对象。
能够做什么(方法):告诉外界对象有那些功能。
后者以前者为基础。
大的对象的属性也可以是一个对象。
为什么要使用面向对象:首先,面向对象符合人类看待事物的一般规律。
对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。
方法的定义非常重要。
方法有参数,也可能有返回值。
注意区分:对象(本身)、对象的实现者、对象的调用者。
分析对象主要从方法开始。
我们通过类来看待对象,类是对象的抽象。
其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。
对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。
这样才能使每个对象本身做成最好的。
对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。
实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。
可复用性是OOP的基础。
比较面向过程的思想和面向对象的思想:面向过程的思想:由过程、步骤、函数组成,以过程为核心;面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。
面向过程是先有算法,后有数据结构。
面向对象是先有数据结构,然后再有算法。
在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。
开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。
从语法上来看,一个类是一个新的数据类型。
在面向对象编程中,除了简单数据类型,就是对象类型。
定义类的格式:class Student{代码}注意类名中单词的首字母大写。
实例变量:定义在类中但在任何方法之外。
(New出来的均有初值)局部变量:定义在方法之中的变量。
局部变量要先赋值,再进行运算,而实例变量均已经赋初值。
这是局部变量和实例变量的一大区别。
实例变量的对象赋值为null。
局部变量不允许范围内定义两个同名变量。
实例变量的作用域在本类中完全有效,当被其他的类调用的时候也可能有效。
实例变量和局部变量允许命名冲突。
书写方法的格式:修饰符返回值方法名调用过程中方法体可能出现的例外public int/void addNumber(参数) throw Excepion {}例:public int addNumber(int a,int b){}注:方法名中的参数int a,int b为局部变量类方法中的一类特殊方法:构造方法。
构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。
注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。
构造方法没有返回值。
格式为:public 方法名。
构造方法的方法名与类名相同。
构造方法是在对象生成的过程中自动调用,不可能利用指令去调用。
在一个对象的生成周期中构造方法只用一次,一旦这个对象生成,那么这个构造方法失效。
用类来生成对象的语句:Student s=new Student()。
第一个Student表示这是用Student类进行定义。
“Student()”表示调用一个无参数的构造方法。
如果()中有参数,则系统构造对象的过程中调用有参的方法。
此时S称为一个对象变量。
Student s的存储区域存放的是地址:一个对象在硬盘上占有一个连续地址,首地址赋予s空间。
S称为对象Student的引用。
注意:在对象变量中存放的是引用(地址);在简单变量中存放的是数值。
可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法:public student(string name,int a){}public student(int a,string name){}为两个不同的构造方法。
如果我们未给系统提供一个构造方法,那么系统会自动提供一个为空的构造方法。
练习:写一个类,定义一个对象,定义两个构造方法:一个有参,一个无参。
(编写一个程序验证对象的传递的值为地址)注意下面这种形式:static void changename(student stu){stu.setName “LUCY”}注意生成新的对象与旧对象指向无关,生成新对象生命消亡与旧对象无关。
面向对象方法的重载(overloading)和覆盖(overriding)。
在有些JA V A书籍中将overriding称为重载,overloading称为过载。
Overloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同。
但修饰词可能相同,返回值也可能相同。
在程序的编译过程中根据变量类型来找相应的方法。
因此也有人认为overloading是编译时的多态,以后我们还会学到运行时多态。
为什么会存在overloading技术呢?作为应对方法的细节。
利用类型的差异来影响对方法的调用。
吃()可以分为吃肉,吃菜,吃药,在一个类中可以定义多个吃方法。
构造方法也可以实现overloading。
例:public void teach(){};public void teach(int a){};public void teach(String a){}为三种不同的方法。
Overloading方法是从低向高转。
Byte—short—float—int—long—double。
在构造方法中,this表示本类的其他构造方法:student(){};student(string n){this();//表示调用student()}如果调用student(int a)则为this(int a)。
特别注意:用this调用其他构造方法时,this必须为第一条语句,然后才是其他语句。
This表示当前对象。
Public void printNum(){Int number=40;System.out.println(this.number);}此时打印的是实例变量,而非局部变量,即定义在类中而非方法中的变量。
This.number表示实例变量。
谁调用this.number那么谁即为当前(this)对象的number方法。
封装:使对象的属性尽可能私有,对象的方法尽可能的公开。
用private表示此成员属性为该类的私有属性。
Public表示该属性(方法)公开;Private表示该属性(方法)为只有本类内部可以访问(类内部可见)。
(想用private还要用set和get方法供其他方法调用,这样可以保证对属性的访问方式统一,并且便于维护访问权限以及属性数据合法性)如果没有特殊情况,属性一定私有,方法该公开的公开。
如果不指明谁调用方法,则默认为this。
区分实例变量和局部变量时一定要写this。
11.29继承:父类(SuperClass)和子类(SonClass)。
父类的非私有化属性和方法可以默认继承到子类。
Class Son extends Father{}而如果父类中的私有方法被子类调用的话,则编译报错。
父类的构造方法子类不可以继承,更不存在覆盖的问题。
(非构造方法可以)如果子类访问父类的构造方法,则在编译的时候提示访问不到该方法。
JA V A中不允许多继承,一个类有且只有一个父类(单继承)。
JA V A的数据结构为树型结构,而非网状。
(JA V A通过接口和内部类实现多继承)方法的覆盖(overriding)方法的重载并不一定是在一个类中:子类可以从父类继承一个方法,也可以定义一个同名异参的方法,也称为overloading。
当子类从父类继承一个无参方法,而又定义了一个同样的无参方法,则子类新写的方法覆盖父类的方法,称为覆盖。
(注意返回值类型也必须相同,否则编译出错。
)如果方法不同,则成重载。
对于方法的修饰词,子类方法要比父类的方法范围更加的宽泛。
父类为public,那么子类为private则出现错误。
之所以构造方法先运行父类再运行子类是因为构造方法是无法覆盖的。
以下范围依次由严到宽:private :本类访问;default :表示默认,不仅本类访问,而且是同包可见。
Protected:同包可见+不同包的子类可见Public :表示所有的地方均可见。
当构造一个对象的时候,系统先构造父类对象,再构造子类对象。
构造一个对象的顺序:(注意:构造父类对象的时候也是这几步)①递归地构造父类对象;②顺序地调用本类成员属性赋初值语句;③本类的构造方法。
Super()表示调用父类的构造方法。
Super()也和this一样必须放在第一行。
This()用于调用本类的构造方法。
如果没有定义构造方法,那么就会调用父类的无参构造方法,即super()。
要养成良好的编程习惯:就是要加上默认的父类无参的构造方法。
思考:可是如果我们没有定义无参的构造方法,而在程序中构造了有参的构造方法,那么如果方法中没有参数,那么系统还会调用有参的构造方法么?应该不会。
多态:多态指的是编译时类型变化,而运行时类型不变。
多态分两种:①编译时多态:编译时动态重载;②运行时多态:指一个对象可以具有多个类型。
对象是客观的,人对对象的认识是主观的。
例:Animal a=new Dog();查看格式名称;Dog d=(Dog)a。
声明父类来引用子类。
(思考上面的格式)运行时多态的三原则:(应用时为覆盖)1、对象不变;(改变的是主观认识)2、对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。
在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。
注意:编译时类型一定要为运行时类型的父类(或者同类型)。
对于语句:Dog d=(Dog)a。
将d强制声明为a类型,此时d为Dog(),此时d就可以调用运行时类型。
注意:a和d指向同一对象。
3、在程序的运行时,动态类型判定。
运行时调用运行时类型,即它调用覆盖后的方法。
关系运算符:instanceofa instanceof Animal;(这个式子的结果是一个布尔表达式)a为对象变量,Animal是类名。
上面语句是判定a是否可以贴Animal标签。
如果可以贴则返回true,否则返回false。
在上面的题目中: a instanceof Animal返回 True,a instanceof Dog也返回 True,instanceof用于判定是否将前面的对象变量赋值后边的类名。
Instanceof一般用于在强制类型转换之前判定变量是否可以强制转换。
如果Animal a=new Animal();Dog d=Dog()a;此时编译无误,但运行则会报错。
Animal a=new Dog()相当于下面语句的功能:Animal a=getAnimal();Public static Animal.getAnimal;Return new Dog();封装、继承、多态为面向对象的三大基石(特性)。