Java(一)串讲笔记 ……(7)、(8) 、(9) 、(10)
- 格式:doc
- 大小:85.50 KB
- 文档页数:6
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。
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四、变量的使用:变量取名,命名规则类型数值: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:exejrelibsrc.zip(二)数据类型一、数据类型转换自动类型转换:int num=100;double b=num;强制类型转换double num=100.9;int b=(int)num;二、运算符赋值运算符 =算数运算符 + - * / % ++ --+= -= *= /= %=关系运算符 > < >= <= == !=逻辑运算符 && || !条件运算符?:了解优先级即可三、流程控制1、if:基本ifif-else多重if嵌套if注意:条件是boolean值常见错误:i f(num=5){}else{}大括号不省略多重if顺序问题注意:流程图的使用和问题的分析解决过程2、switch等值比较注意:(1)语法上的常见错误(2)和多重if的异同循环结构:解决重复性的操作简介高效(三)循环结构一:循环:(1)while循环w hile(条件){操作循环变量迭代}注意:代码缩进循环能否正常退出(2)do-while循环循环}while(条件);注意:代码缩进循环能否正常退出和while的区别:语法上、执行上(至少执行一次)(3)for循环for(变量初始化;条件;变量迭代){循环操作}注意:代码缩进循环能否正常退出执行顺序循环变量可以有多个二、双重循环双重循环的特点:外层循环进入一次,内层循环就要完整的执行一遍特点:外执行一次内执行一轮双重循环次数:外层循环次数*内层循环的次数实现的重点:(1)确定谁做外层循环,确定谁做内层循环(2)两层循环变量有没有规律性的关系1、打印图形:找规律矩形行i外层星星j内层1 53 54 55 5平行四边形行i外层内层:空格星星1 4=5-i 52 3=5-i 53 2=5-i 54 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、分析需求:重复做一件事情前提条件(循环进入的条件)做什么事情(循环操作)2、用代码解释选择一种合适的循环结构whiledo-whilefor根据所选择的结构套用语法while(条件){}do{}while(条件);for(循环变量初始化;条件;迭代){}3、容易出错的点(1)变量在何处声明例1:计算5门课平均成绩例2:f or(int i=0;i<=6;i++){System.out.println(i);}i nt j=i;S ystem.out.println(j);(2)没有适当的(合适的)跳出循环根本跳不出来根本进不去循环多或少循环了一次四、循环的跳转break:跳出整个循环continue:跳出本次循环,进入下次循环return:结束方法(了解即可)五、程序调试设置断点Debug->单步运行 F5 F6观察变量(三)数组一、数组1、数组的基本使用(1)数组的作用一组相同数据类型的数数组也是变量,内存中一串连续的空间(2)数组的几个基本概念标识符(数组名字)元素下标:从0开始数据类型数组的长度(数组名字.length)(3)数组使用步骤声明数组int[] 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){s um+=score;}二、回顾数组变量,内存中一串连续的空间相同数据类型的一组数据数组的基本概念元素数据类型(数组类型)下标(0,数组.length-1)数组的长度:数组.length数组的基本使用声明数组(类型[] 数组名称或类型数组名称[])分配空间(数组名称 = new 数据类型[5];)赋值(num[0]= ;)处理数据变量:基本数据类型i nt、double、float、char、boolean引用数据类型S tring、数组内存分布不同使用上不同.三、数组的典型使用1、求最大值、最小值(打擂台)2、插入算法(找位置)3、冒泡排序数组存储5个数字下标:0 1 2 3 4外层循环内层循环i:0第一轮 + j比较次数:4 =4:length-1i: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类的使用常用方法:sort().....记得查API帮助文档(帮助文档已经在网盘中提供了,如果大家在Oracle官网中没有下载,可以找中心的技术顾问老师提供网盘用户名和密码,登录后拿到帮助文档)数据类型基本数据类型i nt double char boolean 。
第⼀章-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;}}}。
day01计算机分类1.PC机:家用个人电脑2.服务器:处理大量数据的超级计算机3.智能终端:手机,IPAD4:嵌入式设备:除了上面三种以外,带CPU的Windows操作系统--------PC机Linux操作系统--------其他三类java程序主要是服务器端程序一、Java开发环境(一)、认识Linux系统1.Linux是操作系统,并且开源(开放源代码,免费)2.java主要用于服务器端开发,而Linux是主流的服务器操作系统,所以java 应用部署环境多为LinuxLinux与Windows的差别1.文件结构不同,Windows以盘符为单位,盘符里面是文件夹,而Linux以目录为单位2.外部设备映射不同Windous----盘符Linux-------挂载点3.安全级别不同,Linux比较高,而Windows较低注:/:根目录/home/soft01:主目录Linux常用命令pwd:显示当前工作目录ls:显示当前工作目录的内容cd:改变当前工作目录JDK目录:/opt/jdkEclipse:/usr/local/eclipse蓝色:文件夹红色:压缩文件黑色:文件绿色:可执行文件(二)、Java开发环境1.不同操作系统的编码指令是不同的(0,1不同)2.java编译运行过程编译期:.java源文件编译为.class字节码文件运行期:JVM加载.class并运行.class注:JA V A能实现跨平台3.JDK、JRE、JVM的关系JDK----Java Development Kit(Java开发工具包)除了包含JRE,还包括开发JA V A程序所需的编译、运行等等工具JRE----Java Runtime Environment(Java运行环境)提供运行JA V A程序所需要的环境,包括JVM和JA V A系统类库JVM----Java Virtual Machines(Java虚拟机)加载并运行字节码文件运行JA V A最小环境-------JRE开发JA V A最小环境-------JDKJA V A_HOME:指向jdk安装路径CLASSPATH:类(.class)路径,一般简写为“.”PATH:指向jdk下的bin路径,bin中包括javac,java等等命令。
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基础知识总结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面向对象编程(基础) (1)1.1、java来源、开发工具、特点等 (1)1.2、java基础知识 (2)1.3、java面向对象编程 (3)1.4 集合框架、泛型、异常 (4)1.4. 1 集合 (4)1.4.2 泛型 (6)1.4.3 异常 (6)第二章java图形界面(gui) goo-e (8)2.1、图形用户界面(gui)的介绍 (8)2.2、eclipse开发工具的介绍 (8)2.3、swing组建的介绍 (8)2.4、三大常用布局管理器 (8)2.5、java绘图 (10)2.6、java事件处理机制 (10)2.7、坦克大战游戏大战 (12)第三章java数据库编程 (13)3.1、数据库的基本介绍 (13)3.2、sql server介绍 (14)3.3、满汉楼餐饮系统 (14)3.4、开发项目 (15)3.5、学生管理系统 (16)第四章java文件io流 (18)4.1、文件流的基本概念 (18)第五章java网络编程 (19)5.1、网络编程基础知识 (19)5.1.1 IP (19)5.1.2 端口 (19)5.1.3 URL (20)5.1.4 理解单工、半双工和全双工 (20)5.2、服务器端、客户端网络通讯 (21)5.3、山寨版QQ (22)第六章java多线程 (24)1、 (24)第一章java面向对象编程(基础)1.1、java来源、开发工具、特点等java的来源:1990 sun 启动绿色计划1992 创建oak语言–--->java1994 gosling 参加硅谷大会演示java功能,震惊世界1995 sun正式发布java第一个版本,目前最新jdk7.0java开发工具:记事本、jcreator、jbuilder、netbean、eclipse、myeclipsejava语言的特点:java语言是简单的java语言是面向对象的java语言是跨平台(操作系统)的[即一次性编译,到处运行]java是高性能的java程序的执行jre(java运行环境)java的工具java的编译器:javac.exejava解释执行器:java.exejava的类库(3600多类常用的150多个)jre的安装与配置:安装---->添加环境变量即可(path想用的jdk地址就行了)程序中必须有如下注释:/**@author:韩存兴*@function:*@date:2013.5.6*/第一个java语言编译器是在1995年推出的.关键字:(共51组)保留字:指现有java版本尚未使用,但以后版本可能会作为关键字使用.(共14组)1.2、java基础知识基本数据类型:整数类型byte、short、int、longbyte:一个字节-128 到127short:两个字节-32768 到32767int:四个字节-2147483648 到2147483647long:八个字节运算符算术运算符:加(+)、减(-)、乘(*)、除(/)、取模(%)自加(++):a++;--> a=a+1;自减(--): b--; --->b=b-1;左加(+=)、左减(-=)、左除(/=)、左取模(%=)注意:前加加(减减)和后加加(减减)的含义:关系运算符:等于、大于、小于、大于等于、小于等于、不等于逻辑运算符:与(&&)、或(||)、非(!)三大流程控制顺序控制:程序按代码顺序执行分支控制:单分支:if{}双分支:if {} else{}多分支:if {} else if{} else if{};switch (){case 常量1 :语句1;case 常量2 :语句2;….case 常量n :语句n;default : 语句;}switch中的可用数据类型主要是:byte、short、int、char、enum等循环控制:代码可以循环执行for(条件)循环语句(先判断后执行)while(条件)循环语句(先判断后执行)do{} while(条件)循环语句(先执行后判断)1.3、java面向对象编程类与对象类与对象的区别与联系:a)类是抽象的,概念的,代表一类事物b)对象是具体的,实际的,代表一个事物c)类是对象的模板,对象是类的一个个体,实例类的成员方法(函数)-特别说明a)方法的参数列表可以是多个b)方法可以没有返回值构造方法类的构造方法介绍构造方法是类的一种特殊方法,它的主要作用是完成对新对象的初始化,它有以下几个特点:a)方法名和类名相同b)构造方法没有返回值c)主要作用是完成对新对象的初始化d)在创建一个类的新对象时,系统会自动的调用该类的构造方法e)一个类可以有多个构造方法f)每一个类都有一个默认的构造方法this不能在类定义的外部使用,只能在类定义的方法中使用类变量:类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量.定义语法: 访问修饰符static 数据类型变量名;访问类变量:类名.类变量名或者对象名.类变量名类方法属于所有对象实例的,其形式如下:访问修饰符static 数据返回类型方法名(){}注意:类方法中不能访问非静态变量使用:类名.类方法名或者对象名.类方法名java中规则:类变量原则上用类方法去访问类变量与实例变量的区别:a)加上static称为类变量或静态变量,否则称为实例变量b)类变量是与类相关的,公共的属性c)实例变量属于每个对象个体的属性d)类变量可以通过类名.类变量名直接访问类方法:a)类方法属于与类相关的,公共的方法b)实例方法属于每个对象个体的方法c)类方法可以通过类名.类方法直接访问java面向对象编程的四大特征:继承、抽象、封装、多态:继承:继承可以解决代码复用子类最多只能继承一个父类java所有类都是Object类的子类JDK6中有202个包3777个类、接口、异常、枚举、注释、错误在做开发的时候,建议多使用jdk帮助文档和多问google大神抽象:封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作,才能对数据进行操作封装- 访问控制修饰符java提供四种访问控制修饰符号控制方法和变量的访问权限:公开级别:public受保护级别:protected默认级别:没有修饰符号,向同一个包的类公开私有级别:private多态:就是指一个引用在不同的情况下的多种状态包的三大作用:区分相同名字的类当类很多时,可以很好的管理控制访问范围包-命名规范:package 小写;如package com.hcx.dog;包的引入:import com.hcx.dog;方法覆盖:子类有一个方法,和父类的某个方法的名称、返回类型、参数一样。
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编程基础1.Java语言的跨平台是通过针对不同的操作系统,提供不同的jvm来保证的。
2.JDK,JRE,JVM的作用及关系1)作用JVM:保证Java语言跨平台JRE:Java程序的运行环境JDK:Java程序的开发环境2)关系JDK:JRE+工具JRE:JVM+类库3.为了使程序能够独立运行,必须定义main方法main方法是程序的入口被jvm自动调用4.原码,反码,补码正数的原,反,补码都相同负数的反码为原码符号位不变,按位取反负数的补码为原码符号位不变,按位取反,末位加一5.关键字1)被Java语言赋予特定含义的单词2)特点:全部小写。
3)注意事项:A:goto和const作为保留字存在。
B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记6.标识符1)就是给类,接口,方法,变量等起名字的字符序列2)组成规则:A:英文大小写字母B:数字C:$和_3)注意事项:A:不能以数字开头B:不能是java中的关键字C:Java语言严格区分大小写7.常见的命名规则(见名知意):username,password等A:包名全部小写单级包:小写举例:cn,com多级包:小写,并用.隔开举例:com.baidu,com.renrenB:类名或者接口一个单词:首字母大写举例:Student,Demo多个单词:每个单词首字母大写举例:HelloWorld,StudentNameC:方法或者变量一个单词:首字母小写举例:name,main多个单词:从第二个单词开始,每个单词首字母大写举例:studentAge,showAllNames()D:常量全部大写一个单词:大写举例:PI多个单词:大写,并用_隔开举例:STUDENT_MAX_AGE8.注释1)就是对程序进行解释说明的文字2)分类:A:单行注释// 注释内容B:多行注释/* 注释内容 */C:文档注释/** 注释内容 */D:单行注释可以嵌套使用,但是多行注释不可以嵌套使用9.常量1)在程序执行的过程中,其值不发生改变的量2)分类:A:字面值常量B:自定义常量3)字面值常量A:字符串常量 "hello"B:整数常量12,23C:小数常量12.345D:字符常量'a','A','0'E:布尔常量true,falseF:空常量null4)在Java中针对整数常量提供了四种表现形式A:二进制由0,1组成。
JA VA程序设计教程第一章JA V A初步Java SUN(斯坦福大学网络公司)公司旗下产品oak发展到java java分为J2ME ,J2SE,J2EE、Jdk开发和运行程序jre运行程序1第一个程序“HelloWorld”(类的代表,文字的首字母要大写,字母间没有空格)主函数:(1)。
public static voidmain(String[] args)(释:程序开始的地方)(2.)System.out.println("hello world")(释:System的S要大写,点不可缺少,表示调度)试验一:class HelloWorld{public static void main(String[] args){System.out.println("hello world");}}试验二:(计算题的编译与运行)class HelloWorld{public static void main(String[] args){System.out.print("6+8="+(6+8));System.out.println("输入文字");}}运行结果是:6+8=14输入文字(释:当println 去掉ln 的时候,结果就在同一行中显示)2编译:人写的文件转换成计算机可以识别的语言电脑开始----运行-----输入cmdD:回车----cd JA V A回车-------cd javasript 回车------javac hello.java回车结果是:错误,无法读取hello.java工具察看取消隐藏已知文件的扩展名编译和运行有三个区别1命令不一样操作不一样,编译文件名,运行class2运行的时候时候要接扩展名编译javac Hello.java运行java HelloWorld第二章语句块如何声明变量:int a--为变量命名命名规则:a变量名不可以是关键字b变量名中间不可以有空格c变量名中间不能有运算符(+ - * / %)d变量名的开头字符只能是:字母,下划线--,$---------------附加原则:对于变量或者函数:getHourlyPay对于程序或者类名:HelloWorld--------------为变量指定数据类型Byte, short, long, int, float, double, boolean常用的数据类型:int double Boolean2定义变量:在声明的基础上,为变量赋初值例:int a ;a=1;试验三:class Add{public static void main(String[] args){int a=6;double b=8;System.out.println("a+b="+(a+b));}}运行结果是:a+b=14注意:数据类型是可以自动提升的实验四:class Add{public static void main(String[] args){int a=6;int b=12;int c;c=add(a,b);System.out.println("a+b="+c);}static int add(int i,int j)(自定义主函数){return i+j;}}实验五:// EasyIn.javaimport java.io.*;public abstract class EasyIn{static String s = new String();static byte[] b = new byte[512];static int bytesRead = 0;public static String getString(){boolean ok = false;while(!ok){try{bytesRead = System.in.read(b);s = new String(b,0,bytesRead-1);s=s.trim();ok = true;}catch(IOException e){System.out.println(e.getMessage());}}return s;}public static int getInt(){int i = 0;boolean ok = false;while(!ok){try{bytesRead = System.in.read(b);s = new String(b,0,bytesRead-1);i = Integer.parseInt(s.trim());ok = true;}catch(NumberFormatException e){System.out.println("Make sure you enter an integer");}catch(IOException e){System.out.println(e.getMessage());}}return i;}public static byte getByte(){byte i = 0;boolean ok = false;while(!ok){try{bytesRead = System.in.read(b);s = new String(b,0,bytesRead-1);i = Byte.parseByte(s.trim());ok = true;}catch(NumberFormatException e){System.out.println("Make sure you enter a byte");}catch(IOException e){System.out.println(e.getMessage());}}return i;}public static short getShort(){short i = 0;boolean ok = false;while(!ok){try{bytesRead = System.in.read(b);s = new String(b,0,bytesRead-1);i = Short.parseShort(s.trim());ok = true;}catch(NumberFormatException e){System.out.println("Make sure you enter a short integer");}catch(IOException e){System.out.println(e.getMessage());}}return i;}public static long getLong(){long l = 0;boolean ok = false;while(!ok){try{bytesRead = System.in.read(b);s = new String(b,0,bytesRead-1);l = Long.parseLong(s.trim());ok = true;}catch(NumberFormatException e){System.out.println("Make surre you enter a long integer");}catch(IOException e){System.out.println(e.getMessage());}}return l;}public static double getDouble(){double d = 0;boolean ok = false;while(!ok){try{bytesRead = System.in.read(b);s = new String(b,0,bytesRead-1);d = (Double.valueOf(s.trim())).doubleV alue();ok = true;}catch(NumberFormatException e){System.out.println("Make sure you enter a decimal number");}catch(IOException e){System.out.println(e.getMessage());}}return d;}public static float getFloat(){float f = 0;boolean ok = false;while(!ok){try{bytesRead = System.in.read(b);s = new String(b,0,bytesRead-1);f = (Float.valueOf(s.trim())).floatV alue();ok = true;}catch(NumberFormatException e){System.out.println("Make sure you enter a decimal number");}catch(IOException e){System.out.println(e.getMessage());}}return f;}public static char getChar(){char c = ' ';boolean ok = false;while(!ok){try{bytesRead = System.in.read(b);s = new String(b,0,bytesRead-1);if(s.trim().length()!=1){System.out.println("Make sure you enter a single character");}else{c = s.trim().charAt(0);ok = true;}}catch(IOException e){System.out.println(e.getMessage());}}return c;}public static void pause(){boolean ok = false;while(!ok){try{System.in.read(b);ok = true;}catch(IOException e){System.out.println(e.getMessage());}}}public static void pause(String messageIn) {boolean ok = false;while(!ok){try{System.out.print(messageIn);System.in.read(b);ok = true;}catch(IOException e){System.out.println(e.getMessage());}}}}第二次课(3月6日)复习:定义一个函数:示例:static int add(int i,int j)*//Int 表示返回值类型,整形{reture i+j;}1函数的重载定义:有多个函数重名,这些函数都有效,依靠参数,(数量.类型)来区分+号后面都是字符串实验五:class Add{public static void main(String[] args){int a;double b;System.out.println("请出入a和b");a=EasyIn.getInt();b=EasyIn.getDouble();double c;c=add(a,b);System.out.println("a+b"+c);}static int add(int i,int j){return i+j;}static double add(int i,double j){return i+j;}}练习实验:题目1.显示1kilo=2.2pounds 2.请输入花费多少钱?3请输入多重?4输出每公斤多钱5输出pound/2.2 6. cost/pound/2.2class Add{public static void main(String[] args){double cost,pound,kilo;System.out.println("***1 kilo=2.2 pounds***");System.out.println("请输入共花费多少钱?");cost=EasyIn.getDouble();System.out.println("请输入共多重?");pound=EasyIn.getDouble();System.out.println(cost/pound);System.out.println(pound/2.2);System.out.println(cost/pound/2.2);}}注意:1。
Java(一)串讲笔记……(7)、(8) 、(9) 、(10)第7章图形、图像与多媒体Java语言约定,坐标原点(0,0)位于整个区域的左上角。
坐标点(x,y)对应屏幕窗口中的一个像素,必须是整数。
1、Graphics类的基本功能在java.awt包中,类Graphics提供的功能有:建立字体、设定显示颜色、显示图像和文本,绘制和填充各种几何图形。
在某个组件中绘图,一般应该为这个组件所属的子类重写paint()方法,在该重写的方法中进行绘图。
但要在JComponent子类的组件中绘图,应重写paintComponent()方法,在该方法中进行绘图。
系统自动为程序提供图形对象,并以参数g传递给paint()方法和paintComponent()方法。
2、字型和颜色显示文字的方法主要有三种:(1)drawString(String str,intx,inty)(2)drawChars(char data[ ],intoffset,int length,int x,int y)(3)drawBytes(byte data[ ],intoffset,intlength,int x,int y)文字字型有三个要素:字体、风格和字号。
常用的字体有Times New Roman、Symbol、宋体、楷体等。
●常用的风格有三种:正常、粗体和斜体,分别用三个常量表示:Font.PLAIN(正常)、Font.BOLD(粗体)和Font.ITALIC(斜体)。
风格可以组合使用。
●在Java语言中,用类Font对象设置字型。
Font类的构造方法有:Font(String fontName,int style,int size),3个参数分别表示字体、风格和字号。
●使用Graphics的方法setFont(Font font)设置字型。
用类Color的对象设置颜色,有两种方法生成各种颜色。
一是用类Color预定义的颜色:black、red、white、yellow……,二是通过红绿蓝(RGB)的值合成颜色。
3、绘图Graphics类提供基本绘图方法,Graphics2D类提供更强大的绘图能力。
Graphics类的绘图方法●画线段在窗口中画一条线段,可以使用Graphics类的drawLine( )方法:drawLine(int x1,int y1,int x2,int y2)g.drawLine(100,100,100,100);//画一个点●画矩形有两种矩形:普通型和圆角型。
✓画普通矩形有两个方法:drawRect(int x,int y,int width,int height),画线框围起来的矩形。
fillRect(int x,int y,int width,int height),是用预定的颜色填充一个矩形,得到一个着色的矩形块。
✓画圆角矩形也有两个方法:drawRoundRect(int x,int y,intwidth,intheight,int arcWidth,int arcHeight)。
fillRoundRect(int x,int y,intwidth,intheight,int arcWidth,int arcHeight)●画三维矩形Draw3DRect(int x,int y,int width,int height,boolean raised)Fill3DRect(int x,int y,int width,int height,boolean raised)●画椭圆形drawOval(intx,inty,intwidth,intheight)fillOval(intx,inty,intwidth,intheight),是用预定的颜色填充的椭圆形,是一个着色块。
也可以用画椭圆形方法画圆形,当横轴和纵轴相等时,所画的椭圆形即为圆形。
●画圆弧drawArc(intx,inty,intwidth,intheight,int startAngle,int arcAngle),画椭圆一部分的圆弧线。
fillArc(intx,inty,intwidth,intheight,int startAngle,int arcAngle),用setColor( )方法设定颜色,画着色椭圆的一部分。
●画多边形drawPolygon(int xPoints[ ],int yPoints[ ],int nPoints)fillPolygon(int xPoints[ ],int yPoints[ ],int nPoints)●擦除矩形块clearRect(int x,int y,int width,int height)●限定作图显示区域方法是clipRect(int x,int y,int width,int height)●复制图形copyArea(int x,int y,int width,int height,int dx,int dy)4、Graphics2D类的绘图方法绘图属性(1)stroke属性:控制线样的宽度、笔形样式、线段连接方式或知道划线图案。
(2)paint属性:性控制填充效果(3)transform属性:用来实现常用的图形平移、缩放、旋转和斜切等变换操作。
(4)clip属性:用于实现剪裁效果。
(5)composit属性:设置图形重叠区域的效果。
在java.awt.geom包中声明的一系列类,分别用于创建各种几何图形对象。
Graphics2D的几何图形类(1)线段(Line2D)(2)矩形(Rectangle2D)(3)圆角矩形(RoundRectangle2D)(4)椭圆(Ellipse2D)(5)圆弧(Arc2D)(6)二次曲线(QuadCurve2D)方法Double()中的6个参数分别是二次曲线的始点、控制点和终点。
(7)三次曲线(CubicCurve2D)方法Double( )中的8个参数分别是三次曲线的始点、两个控制点和终点。
5、图像处理基础图像是由一组像素构成,用二进制形式保存的图片,Java语言支持GIF、JPEG和BMP这3种主要图像文件格式。
Java语言的图像处理功能被封装在Image类中。
图像载入和输出在Java程序中,图像也是对象,所以载入图像时,先要声明Image对象,然后,利用getImage()方法把Image对象与图像文件联系起来。
(1)Image getImage(URL url),url指明图像所在位置和文件名。
(2)Image getImage(URL url,String name),url指明图像所在位置,name是文件名。
取相对位置的方法有:(1)URL getCodeBase(),取小应用程序文件所在的位置。
(2)URL getDocumentBase(),取HTML文件所在的位置。
获取图像信息(属性)的方法有:(1)getWidth(ImageObserver observer),取宽度。
(2)getHeight(ImageObserver observer),取高度。
6、小程序要播放音频文件,可使用类AudioClip,该类在java.applet.AudioClip类库中定义。
小程序先创建AudioClip对象,并用getAudioClip()方法为其初始化。
代码形式如下:AudioClip audioClip=getAudioClip(getCodeBase(),”myAudioClipFile.au”);●如果要从网上获得音频文件,可用方法getAudioClip(URL url,String name),根据url地址及音频文件name获得可播放的音频对象。
●控制声音的播放有3个方法:play()播放声音,loop()循环播放和stop()停止播放。
第8章多线程1、进程是程序的一次执行过程,从代码加载、执行,直至完成的一个完整过程。
2、线程是一个控制流,也是一个执行过程,但执行单位比进程小。
一个进程在其执行过程中,可以产生多个线程,形成多条执行线索。
每条线索,即每个线程也有它自身的产生、运行和消亡的过程。
3、线程与进程比较:它们的共同点,都是程序的一个执行过程。
不同点是进程是一个实体,每个进程有自己的状态、专用数据线(独立内存资源);同一个进程下的线程则共享进程的数据段。
创建进程时,必须建立其专用的数据段;创建线程时不必建立新的数据段。
线程不是能够独立运行的程序,而只是某个进程内的一个执行流。
4、一个线程“创建→工作→死亡”的过程称为线程的生命周期。
线程生命周期共有五个状态:新建状态、就绪状态、运行状态、阻塞状态和死亡状态。
5、线程调度与优先级线程的调度策略采用抢占式,优先级高的线程比优先级低的线程优先执行。
在优先级相同的情况下,就按“先到先服务”的原则。
每个Java程序都有一个默认的主线程,就是通过JVM启动的第一个线程。
对于应用程序,主线程执行的是main()方法。
对于Applet,主线程是指浏览器加载并执行小应用程序的那一个线程。
子线程是由应用程序创建的线程。
守护线程(Daemon),是一种用于监视其他线程工作的服务线程,它的优先级最低。
6、Java程序实现多线程应用有两种途径:一是继承Thread类声明Thread子类,用Thread子类创建线程对象。
二是在类中实现Runnable接口,在类中提供Runnable接口的run( )方法。
无论用哪种方法,都需要Java基础类库中的Thread类及其方法的支持。
程序员能控制的关键性工作有两个方面:一是编写线程的run( )方法;二是建立线程实例。
7、Thread类Thread类是用来创建线程和提供线程操作的类。
Thread类提供的方法(1)Thread(),创建一个线程。
(2)Thread(String m),创建一个以m命名的线程。
(3)Thread(Runnable target),创建线程,参数target是创建线程序的目标。
目标是一个对象,对象的类要实现Runnable接口,类中给出接口的run( )方法。
(4)getPriority(),获得线程的优先级。
(5)setPriority(int p),设定线程的优先级为p。
优先级的数值越大优先级越高(缺省是5)。
常用以下3个优先级:Thread.MIN PRIORITY(最低)、Thread.MAX PRIORITY(最高)和Thread.NORM PRIORITY(标准)。
(6)start(),启动线程,让线程从新建状态到就绪状态。
(7)run( ),实现线程行为(操作)的方法。
(8)sleep(int dt),让线程休眠dt时间,单位是毫秒。
由于sleep()方法可能会产生InterruptedException异常,应将sleep()方法写在try块中,并用catch块处理异常。