1、第一章 初始 java1、学习编程的目的是掌握一门技术,并且不辜负大好时光。报培训班 并且看好的视频,加上好的执行力。2、职业规划 就是,先学习基本的编程知识,初级程序员,高级程序员,项目经理,架构师。3、 需要理解底层内存的运行过程,每一个步骤都要清晰如水,需要能默写出来,出口成章,下笔如有神。4、 我们的理念是 让成功只需要努力,不需要运气。我们的定位是 把小白培养成 CTO 的黄埔军校。5、 一、采用电子管的第一代计算机(19461959 年)第一代计算机的内部元件使用的是电子管。第一代计算机主要用于科学研究和工程计算。二、采用晶体管的第二代计算机(19601964 年)第二代计算机的内
2、部元件使用的是晶体管,晶体管比电子管小得多,处理更迅速、更可靠。第二代计算机主要用于商业、大学教学和政府机关。三、采用集成电路的第三代计算机(19651970 年)第三代计算机使用的是集成电路,集成电路(Integrated Circuit,简称 r)是做在晶片上的一个完整的电子电路,这个晶片比手指甲还小,却包含了几千个晶体管元件。第三代计算机的特点是体积更小、价格更低、可靠性更高、计算速度更快。第三代计算机的代表是 IBM 公司花了 50 亿美元开发的 IBM360 系列。四、采用超大规模集成电路的第四代计算机(1971 年至今)第四代计算机使用的元件依然是集成电路,不过,这种集成电路已经大
3、大改善,它包含着几十万到上百万个晶体管,人们称之为大规模集成电路和超大规模集成电路。1975 年,美国 1BM 公司推出了个人计算机 PC(PersonaI Computer),从此,人们对计算机不再陌生,计算机开始深入到人类生活的各个方面。从 20 世纪 80 年代开始,发达国家开始研制第五代计算机,研制的目标是能够打破以往计算机固有的体系结构,使计算机能够具有像人一样的思维、推理的判断能力,向智能化发展,实现计算机运行接近人的思考方式的目标6、 Java 核心优势是 跨平台 开源 。7、 Java 的三个版本是 java5.0 java7.0 java6.0;8、 Java 是 Sun 公
4、司发明的,Sun 公司是斯坦福大学的旗下的分支,Sun 公司被甲骨文公司 71 亿美金收购。9、 java 的跨平台 是有 java 虚拟机实现的,也就是jvm。Java 的核心机制 动态绑定 多态,迟绑定。 Java 的虚拟机可以将 java 程序编译成每个系统自身可以识别的语言,从而完成跨平台。12、java 语言是编译型的语言。13、Jdk : java 开发程序包。 Java 开发环境 14、Jvm java 虚拟机,15、 Jre java 的类包16、Jdk 包括 jre 正确17、DOS 命令行 的常用命令 dir 查找当前目录下所有的文件 cd 全盘查找 指定目录18、DOS
5、下自动补全命令的按键 是 alt+/ 19、DOS 下重复之前那个按键是 向上的箭头, 配置java_home 是为了让 dos 编译 java_home 下的目录下的 java文件。20、Public class 后面的类名必须和文件名称一致,并且只能有一个 public 类。21、 tab 和 shift+tab 可以完成成对编程和缩进。22、System.out.println(“hi”); 不能被执行,因为没有类和main 方法。23、会 一个 java 文件会生成多个 class 文件,并且 java 虚拟机会自动编译。24、注释可以让代码更清晰,明了,并且易于都懂,维护。注释的类型
6、有 / /* */ /* */25、多行注释,不能嵌套使用。26、package zuoqiu;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;public class BallGame extends Frame Image ball = Toolkit.getDefaultToolkit().getImage(“images/ball.png“);Image desk = Toolkit.getDefaultToolkit().getImage(“ima
7、ges/desk.jpg“);double x = 100;double y = 100;double degree = 3.14/3;public void paint (Graphics g)System.out.println(“窗口被化了一次! “);g.drawImage(desk, 0, 0, null);g.drawImage(ball,(int)x,(int)y,null);x = x + 10*Math.cos(degree);y = y + 10*Math.sin(degree);if (y480-30-40)degree = -degree;if(x856-30-40)d
8、egree = 3.14-degree; if(x boolean 型在上一章的逻辑运算符中,我们就已经看到过了取值为true 和 false 的变量,这种变量称为 boolean 型变量。 2 char 型 char 型是用来表示字母的,它仅能表示一个单一的字母。通常 char 型常量必须使用单引号括起来,以与数字区分开来。下面就是一个 char 型变量的实例: char letter=a; char 型在 Java 语言中并不是很常用,因为如果要存储字符的话,一般使用扩展的数据类型 string. 3 整型 在 Java 语言中,提供了多种整型数据类型:byte、short、int、lon
9、g。它们都是定义了一个整数,唯一的区别就是它们能够表示数据的范 围。 能够表示数据的范围越大,占用的内存空间也就越大,因此,在程序设计中应该选择最合适的类型来定义整数。 大家可以根据以下规律,记住它们所占的内存空间: 1) int 是最基本的,它占用 32 位(现代计算机不就是32 位机嘛!); 2) long,长的,也就是比 int 还长,它占用 64 位; 3) short,短的,也就是比 int 还短,它占用 16 位; 4) byte,字节,8 位组成一个字节,当然 byte 就只占8 位了。 根据它们所占用的内存空间不同,能够表示的数字范围也不同。占用内存空间越大,能够表示的数字范围
10、也就越广。 4 浮点型 前面我们学习了存储整数的变量数据类型,现在我们还看看存储小数的变量数据类型-浮点数。在 Java 语言中有两种浮点数类型:float 、double。 其中 float 是单精度型,占用 32 位内存空间,而double 是双精度型,占用 64 位内存空间。 浮点数: 浮点数这个名称是相对于定点数而言的,这个点就是小数点。浮点数就是指小数点可以根据需要改位置。 35、标识符 就是各种名称,为了区分对象、类等36、标识符 只能由 字母 数字,美元符号,下划线组成 开头 只能由字母 美元符号 下划线 开头 不能有数字开头。37、标识符不能用汉字开头,因为 java 底层是有
11、英语写的并且它的跨平台,汉字的编码系统是 gbk 不是广泛应用的。38、Java 中没有 goto 语句,但是 goto 也是 java 的关键字。39、整形数 常常默认为 int 类型40、Float 占用 4 个字节 32 位 double 占用 8 个字节双精度 64 位41、浮点常量默认是 double 类型42、Byte = 500 ; 不对 byte 表示范围是-128-127Long 类型的数字 后面要加 l 或者 L43、public class aa public static void main(String args) float d1 = 423432423f;floa
12、t d2 = d1 + 1;if(d1 =d2)System.out.println(“d1=d2“);else System.out.println(“d1!=d2“);输出的结果是 d1 =d2;字符型变量占用一个字节 8 位,char c = a;47、java 的基本数据类型中,boolean 只有两种状态,默认值为 false.取值范围是 true,false,理论上占 1bit,实际上:1.单个的 boolean 类型变量在编译的时候是使用的 int 类型。boolean a=true;/这个 a 在 JVM 中占 4 个字节即:32 位。2.boolean 类型的数组时,在编译的
13、时候是作为 byte array来编译的所以 boolean 数组里面的每一个元件占一个字节,boolean b = new boolean10;/数组时,每一个 boolean 在JVM 中占一个字节。理由:1) JAVA 规范中没有定义 boolean 类型的大小。2)但是:在 JVM 规范第 2 版中讲得十分清楚。我上边的结论就是从它当中取出来的。根据:(JVM 规范第 2 版 3.3.4 节)Instead, expressions in the Java programming language that operate on boolean values are compiled
14、to use values of the Java virtual machine int data type. Where Java programming language boolean values are mapped by compilers to values of Java virtual machine type int, the compilers must use the same encoding. 而:Java virtual machine type int, whose values are 32-bit signed twos-complement intege
15、rs。Arrays of type boolean are accessed and modified using the byte array instructions In Suns JDK releases 1.0 and 1.1, and the Java 2 SDK, Standard Edition, v1.2, boolean arrays in the Java programming language are encoded as Java virtual machine byte arrays, using 8 bits per boolean element.48、if(
16、b = true) 这样写不好! 百度49、常量的声明用 final 权限修饰符50、常量的命名规则是 一经赋值,不得更改 如果修改,系统报错 常量名通常大写;驼峰原则就是 变量名 首字母小写后面每个单词的首字母大写; 当变量名或者函数名是由一个或者多个单字连接在一起,而构成唯一的标识符时,第一个单字以小写字母开始,第二个单字的首字母大写或者每一个单字的首字母都采用大写字母;51、使用键盘录入,必须导包 import java.util.Scanner;52、类名的命名规则 首字母必须大写53、方法名,变量名用驼峰原则,常量必须全部大写;454、引用类型占用 4 个字节在 32 位的系统中,在
17、 64 位的系统中就是 8 个字节;55、所谓类型提升,举例来说:int a; float b; . c=a+b;在计算 a+b 时,是按照 float 类型来进行的,计算机发现两个变量类型不一致时,会按照更复杂的类型的那个变量作为基准组织运算,a+b 计算时,会将 a 转换成 float 型数据,按照 float 规则运算,得到 float 型的结果。56、I+ 与+i 的区别是 前者是先运算后自增,后者是先自增后运算,参与运算的 i 的值不同,影响最后的运算结果就不同;57、关系运算符中 不能写 15 被执行了,而 i+5 和 i+9 都被执行了。62、+ 两边的数据类型不同的时候,其中有
18、一个是 String 类型的时候;字符串连接符 其实是调用了 object 的 toString方法将其他类型的字符转换成了 string 类型的字符串并进行 了连接;63、68、第二个写法好,第一个每次运算都是 long 类型和 int 类型的乘法运算,;第 3 章 控制语句70、三种控制结构是顺序结构、条件结构、循环结构;71、对 if 语句后面不写 就会只执行第一句;72、Math.random() 获取任意一个随机数 在0,1) 之间;(int)Math.random()*5+15;73、如果有多个选项的时候 if elseif 语句就太笨拙,switch 语句 就特别容易了;例如Sc
19、anner sc = new Scannerz(System.out);System.out.println(“请输入你的选项:1,2,3,4”);Int choice = nextInt();switch (choice)case 1:break;case 2:.break;case 3:break;case 4:break;default;.break;74、switch 中的表达式中的结果可以是 char byte short int 的常量表达式,也可以是枚举常量,也可以是字符串字面量;75、Break 语句结束执行 case 语句;76、不是必须的。 switch case 语句是一
20、个条件选择语句,找到相同的 case 值做为入口,执行后面的程序;若所有的case 都不满足,则找 default 入口;若未找到则退出整个switch 语句。 所以 default 只是一个备用的入口,有没有都无所谓。77、因果 重复78、初始化 条件判断 循环体 迭代79、While 先判断条件 后执行语句,do while 是先执行语句后判断条件,语句体至少被执行一次;80、循环条件永远成立的时候就是死循环,while(true)System.out.println(“helloworld”);81、For 循环语法结构比 while 循环简便;通常用于解决循环次数固定的问题;82、a
21、没有初始化;83、i 超出了作用范围,只在大括号中使用;84、Break 是跳出循环体,结束循环,continue 是跳过背刺循环,继续下一个循环;85、语句块中的变量外部不能使用,外面的变量 语句块中可以使用;86、可以有返回值 ,也可以没有返回值,用 void 关键字;87、有返回值的方法定义,必须写 return 语句用于结束方法,么有返回值就不写,;88、Java 中参数传递的是值传递;89、方法的定义中,形式参数是方法名后面的括号中变量,实际参数是具体的值,实际参数赋给形式参数;90、定义形参时 必须写变量类型;91、必须比配;92、方法的重载是针对类的,类的同名方法,方法的参数不同
22、,或者参数个数,参数类型不同的同名称方法叫做方法的重载;传递不同的参数,实现相同的效果;93、什么是方法的重载,有什么作用?方法的重载是 子类继承来自父类的同名方法,但是传递的参数不同,并且输出的内容也不同的一个同名方法继承和多态都是面向对象程序设计的特点。使用继承可以在一个父类的基础上再创建一个子类,这个子类不但拥有父类已有的属性和方法,还可以创建属于自己的属性和方法。由于子类和父类之间的关系,从而引出了方法重写和方法重载的问题。方法重写及方法重载在继承和多态性方面的应用中会存在很多问题,这些概念很容易混淆,掌握重写和重载的区别对学会使用多态的方式编写程序、提高程序的可维护性奠定了基础。一、
23、 方法重写(0veriding)如何定义重写:在 Java 程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量。子类可以定义新的特征,当子类需要修改父类的一些方法进行扩展,增大功能,程序设计者常常把这样的一种操作方法称为重写,也叫称为覆写或覆盖。重写体现了 Java 优越性,重写是建立在继承关系上,它使语言结构更加丰富。在 Java 中的继承中,子类既可以隐藏和访问父类的方法,也可以覆盖继承父类的方法。在 Java 中覆盖继承父类的方法就是通过方法的重写来实现的。所谓方法的重写是指子类中的方法与父类中继承的方法有完全相同的返回值类型、方法名、
24、参数个数以及参数类型。这样,就可以实现对父类方法的覆盖。例如:下面的代码实现了方法的重写。class Person /定义父类public void print()/父类中的方法System.out.println( 父类 Person 的 print 方法! );class Student extends Person/定义子类继承 Person 类public void print()/方法的重写System.out.println( 子类 Student 的 print 方法! );public class 0verrideExampleO1public static void main
25、(String args)Student s=new Student();S.print();运行结果:子类 Student 的 print 方法!可以看出,当子类重写了父类中的 print()方法后,使用 S 调用的是子类的 print()方法,父类中的 print()方法被覆盖了。也就是说,如果现在子类将父类中的方法重写了,调用的时候肯定是调用被重写过的方法,那么如果现在一定要调用父类中的方法该怎么办呢?此时,通过使用 super 关键就可以实现这个功能,super 关键字可以从子类访问父类中的内容,如果要访问被重写过的方法,使用“super.方法名( 参数列表)”的形式调用。例如:Cla
26、ss Personpublic void print () System.out.println( 父类 Person 的 print 方法! );class Student extends Personpublic void print () super.print(:/访问父类中被子类覆写过的方法System.out.println(“ 子类 Student 的 print 方法!“ );public class OverrideExample02public static void main(String args)Student s=new Student();S.print();运行结果:父类 Person 的 print 方法!子类 Student 的 print 方法 !如果要使用 super 关键字不一定非要在方法重写之后使用,也可以明确地表示某个方法是从父类中继承而来的。使用super只是更加明确的说,要从父类中查找,就不在子类查找了。