101010109_CoreJava单元要点
- 格式:docx
- 大小:20.34 KB
- 文档页数:3
java基础知识点笔记Java是一门非常重要的计算机语言,具有良好的跨平台性和易读性和易学性。
尤其是基于Java开发的移动端和Web端产品,其优秀的性能和可扩展性在行业中得到了广泛的青睐。
作为Java开发工程师,熟练掌握Java的基础知识非常重要。
一、Java基本语法Java程序包含一个或多个类,不同类可以相互调用使用。
每一个Java程序都需要有一个入口点,即main()函数。
在Java中,注释采用“//”或“/*...*/”的形式,可以单行或多行注释。
Java变量需要先声明再使用,可以定义基本类型变量和引用类型变量。
Java中的运算符包括算术运算符、逻辑运算符等。
二、Java面向对象编程Java是一门面向对象的编程语言,对象是Java程序的基本组成单元。
Java中的类封装了数据和方法,可以实现类的继承和多态。
在Java中,使用构造函数实例化对象,可以使用访问控制符来控制类成员的访问权限。
三、Java流程控制语句Java中的流程控制语句有条件语句(if、if-else、switch)、循环语句(while、do-while、for)等。
其中,if语句可以进行嵌套,switch语句可以使用break语句避免case穿透问题。
四、Java数组Java中的数组是一组相同类型的数据序列,从0开始编号,使用方括号表示。
在Java中可以使用foreach来遍历数组,也支持多维数组。
五、Java异常处理Java程序中的异常指的是程序出现的错误。
异常处理是Java程序中的一部分,可以使用try-catch语句来捕获并处理异常。
Java中的异常类型包括运行时异常和受检查异常。
六、Javaio编程Java中的文件和I/O操作称为io编程。
Java的io编程采用字节流和字符流,其中字节流用于处理二进制数据,字符流用于处理文本数据。
Java中的io操作需要进行文件的读取、写入等操作,可以使用File类来操作文件。
七、Java线程Java程序中,线程指的是一条执行序列,Java中的线程可以继承Thread类或实现Runnable接口。
10个必须掌握的Java基础知识一、Java语言基础Java是一种基于现代计算机体系结构的面向对象编程语言。
Java程序具有跨平台性,可在各种操作系统平台上运行。
Java程序设计语言基础由三部分组成:Java语法、Java类库和Java虚拟机。
Java语法规定了Java程序的语法结构和逻辑规则。
Java类库提供了实用和标准的Java类,实现了众多功能和API。
Java虚拟机负责将Java程序转换为可被操作系统识别的机器码。
二、Java中的变量Java中的变量用于存储值和数据。
变量有不同的类型。
Java中常用的数据类型包括:1.整型(byte、short、int、long):表示整数。
2.浮点型(float、double):表示带有小数点的数字。
3.布尔型(boolean):表示“真”或“假”。
4.字符型(char):表示一个字符。
在Java中,变量必须先被声明,才能使用。
变量的作用域可以是全局或局部。
三、Java中的数组数组是Java中的数据结构之一。
数组可以存储同类型的数据。
Java中常用的数组类型包括:1.一维数组2.二维数组在Java中,数组的大小要在声明时指定。
对于数组中的每个元素,都有一个唯一的索引。
四、Java中的操作符Java中的操作符用于执行各种数学和逻辑操作。
Java中常用的操作符包括:1.算术操作符(+、-、*、\/、%):用于数学运算。
2.关系操作符(>、<、==、!=、>=、<=):用于比较操作。
3.逻辑操作符(&&、||、!):用于逻辑运算。
4.位操作符(&、|、^):对二进制数的各位执行操作。
五、Java中的流程控制语句Java中的流程控制语句用于控制程序执行的流程。
Java中常用的流程控制语句包括:1.if语句2.switch语句3.while循环语句4.do-while循环语句5.for循环语句6.break语句7.continue语句六、Java中的类与对象Java是一门面向对象的编程语言。
第一课:java环境与DOSjava体系JAVA SEa)Java Platform,Standard Editionb)标准版:各应用平台的基础,桌面开发和低端商务应用的解决方案JAVA EEc)Java Platform,Enterprise Editiond)企业版:以企业为环境而开发应用程序的解决方案JAVA MEe)Java Platform, Micro Editionf)微型版:致力于消费产品和嵌入式设备的最佳解决方案java的特性1、纯面向对象的编程语言2、一种与平台无关的语言( 它提供了在不同平台下运行的解释环境)3、一种健壮的语言,吸收了C/C++语言的优点4、有较高的安全性。
(自动回收垃圾,强制类型检查,取消指针) java跨平台原理java虚拟机1、JVM可以理解成一个可运行Java字节码的虚拟计算机系统1)它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信2)对于不同的运行平台,有不同的JVM。
2、JVM屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”JDK&JREJDK(Java Development Kits)-- Java开发工具集g)JRE(Java RunTime Environment)Java运行时环境h)Java编译器(javac.exe)i)Java运行时解释器(java.exe)j)Java文档化化工具(javadoc.exe)k)其它工具及资源JRE的三项主要功能:l)加载代码:由类加载器(class loader)完成;m)校验代码:由字节码校验器(bytecode verifier)完成;执行代码:由运行时解释器(runtime interpreter)完成常用的DOS命令n)dir:列出当前目录下的文件以及文件夹o)md:创建目录eg:md aap)rd:删除目录eg: rd aa eg: rd /s/q aaq)cd:进入指定目录eg: cd aar)cd ..:退回到上一级目录s)cd\:退回到根目录t)del:删除文件eg: del xx.txtu)exit:推出dos命令行v)cls:清除屏幕w)Copy con xxx 创建文件ctrl + z + 回车结束环境变量配置我的电脑(计算机)→右键属性→高级系统设置→环境变量→系统变量/用户变量JAVA_HOMEJDK 安装目录CLASSPATH待执行的.class文件目录PATHJava工具(javac、java、javadoc等)路径DOS变量临时配置方式set:用于查看本机的所有环境变量的信息set 变量名:查看具体某个环境变量的值:eg:set path set 变量名=:清空某个环境变量eg:set path =set 变量名=具体值:给指定变量定义具体的值如何在原有的变量上添加新值?通过%变量名%获取旧值通过set 变量=新值;%变量名%注意:临时配置只对当前dos窗口有效等号前后必须是定格(不留空格)第一个java程序开发步骤:写源码:public class HelloWorld{public static void main(String[] args){System.out.println("hellowrold");}}保存源码为后缀名为.java的文件注意:后缀名必须是.java 在不隐藏后缀名的视图下编译javac 源码文件.java执行java HelloWorld1)执行的时候不需要加.class2)如果你的源码(.java) 使用public 那你的源文件名字必须与class单词后的单词(类名)一致eg: HelloWorld.java3)执行.class 文件,必须提供一个程序入口,否则报错public static void main(String[] args){System.out.println("hellowrold");}错误: 在类HelloWorld 中找不到main 方法, 请将main 方法定义为public static void main(String[] args)否则JavaFX 应用程序类必须扩展javafx.application.Application4) 源码改动了,必须重新编译一遍第二课:java符号集与变量符号集注释(重点:识别、运用、分类)概念:注释是程序中说明性文字,是程序的非执行部分,在程序中加注释目的是让程序更加易读、易理解,也有助程序的修改及功能记录。
CoreJava总结第一篇:CoreJava总结Java概述一、JDK/JRE/JVMJDK:JAVA开发工具包,比JRE多了一些开发和调试的命令,比如javac、java等等。
JRE:JAVA运行环境JVM:JAVA虚拟机包含关系:JDK包含JRE,JRE包含JVM三、配置环境变量JAVA_HOME:JDK的安装路径CLASSPATH:类的搜索路径PATH:命令的搜索路径--右键我的计算机-->高级-->环境变量-->在系统变量或者用户变量上配置-->JAVA_HOME:当前机器上JDK的文件目录“C:Program FilesJavajdk1.6.0_05”CLASSPATH:类的搜索路径“.”当前目录Path:命令的搜索路径...;%JAVA_HOME%bin--开始-->运行-->cmd-->java验证是否配置成功二、注释三种:1、单行注释: //...2、多行注释: /*...*/3、文檔注释: /**......*/ 另一种多行注释,但是这种注释可以生成API文檔(HTML格式的)提取API文檔的命令:javadocjavadoc应用,提取说明文件javadoc XX.java-d 生成文文件路径比如:javadoc String.java-d.stringdoc在String.java所在的檔夹中便会生成一个stringdoc檔夹,里面是html格式的解释文檔顺便教下学生看API文檔三、标识符只能以字母,“_”,“$”符号开头,不能以数位开头支持汉字四、良好的编码习惯1、类的首字母要大写,如果有多个单词,每个单词首字母都要大写比如:HelloWorld2、接口名命名与类名一样3、方法名第一个单词小写,以后每个单词的首字母都大写比如:getName4、变量名的命名习惯和方法名的相同5、常量(不可改变的)的名字所有字母都大写,单词与单词之间用“_”连接比如:DRIVER_NAME6、包名所有字母都小写三、关键词(50个)自己命名变量名或者其它名字不能和关键词的一样true,false,null不是关键词,是字面值,同样不能把这些单词作为名字goto和const是保留字,并不应用于java开发,也不能作为其它名字使用其它语言中goto语句的用法(无条件跳转)java中的代替goto的是break loop;loop是个标号,标记一个循环,break loop就结束了这个循环数据类型和控制结构一、数据类型boolean 两个值true或者false,占8个二进制位byte8位整数short16位整数char16位的Unicode编码,有足够的空间保存非英文字符--'A':65,'a':97,'0':48int32位整数long64位整数float32位浮点型double 64位浮点型二、String类型:是一个类,而不是基本类型赋值的话就用双引号引起来,比如String a=“abc”;三、整型数据整型变数赋值int ia=0x55;//这种赋值是可以的,赋值为了一个16进制资料byte bb=0x771;//0x771已经超出了byte的取值范围,所以编译这句话会出错byte ba=(byte)0x771;//把0x771强制转换成bytelong la=1234567L;//给long类型的变量赋值四、浮点型数据1、赋值float fa=123.4F//后面加个Fdouble d=123.456D//后面的D跟不跟都可以类型转换:自动类型转换小范围---◊大范围Byte-◊ short-◊ int-◊ long-◊ float-◊ doubleChar-◊ int在表数范围内的常数可以自动转换强制类型转换五、垃圾回收1、如果某一个对象没有引用指向它了,那么这个对象就是个垃圾对象比如String s=new String(“...”);s=null;那被new出来的String对象就是一个垃圾数据了2、垃圾回收机制对于没有被引用的对象,java JVM会自动回收System.gc()提醒虚拟机进行垃圾回收,但只是提醒建议break和continue后面可以加下标,跳出循环和继续循环。
第⼀章-Java基础笔记Java语⾔的概述Java是⼀门⾯向对象的语⾔,Java相对于C语⾔来说学习相对简单,它主要的三⼤特点就是:封装、继承、多态,并且只需要进⾏⼀次源码编译,在任何装有对应版本的JVM 虚拟机环境的计算机下运⾏;Java的三个版本JavaSE主要⽤于桌⾯应⽤的开发JavaME主要⽤于嵌⼊式系统的开发JavaEE主要⽤于企业级的WEB端开发和服务器开发Java环境介绍JDK - 提供了开发者的⼀些⼯具包,并包含了[JRE和JVM]JRE - Java的运⾏环境,提供了运⾏时需要的类库,并包含了[JVM]JVM - Java的虚拟⼀块内存区域,⽤于执⾏Java的代码Java跨平台交互图Java代码的运⾏机制后缀点java的⽂件会通过 javac命令进⾏⽂件的编译成⼀个能够被JVM读懂的字节码⽂件,通过加载、校验、初始化的过程都内存中,通过JVM寄存器读取⽂件中的⾏号,进⾏执⾏相关代码;注释注释是为了在编写程序时对某个类、⽅法或是⼀段代码进⾏功能作⽤的说明,它不会被编译成代码执⾏,只是起到⼀个描述作⽤,便于对代码的理解;Java中的注释分为3种:单⾏注释://多⾏注释:/* */⽂档注释:/** */对注解的内容⽣成JavaDoc⽂档DOS命令进⼊到要⽣成Doc⽂档的层级⽬录,执⾏:javadoc -encoding UTF-8 -charset UTF-8 ⽂件名称/*** @Author JavaCat7* @Description 这是⼀个⽂档注释*/public class Demo{/*** @Parameter args 对参数的描述* @Description 这是⼀个⽂档注释*/public static void main(String[] args){//这是⼀个单⾏注释System.out.println("Hello Java");/*这是多⾏注释这是多⾏注释*/}}标识符每个⼈都有名字,⽽标识符是为了给代码中的类、接⼝、⽅法、变量取⼀个名字,但它们的明⽩是有着严格规范的;规范:每个⼈都有名字,⽽标识符是为了给代码中的类、接⼝、⽅法、变量取⼀个名字,但它们的明⽩是有着严格规范的;**规范:**1.严格区分⼤⼩写;2.开头可以是$ 或 _ 或 A-Z a-z的字母组成,也可以汉字(不会这么⼲);3.可以由数字、字母或者是 $ 或 _ 组成,但数字不能⽤于开始;4.不可以包含特殊字符;5.不能以Java语⾔中的保留字作为命名;6.类名采取⼤驼峰命名法;7.⽅法和变量采取⼩驼峰命名法;8.常量采取⼤学加_进⾏命名;基本数据类型Java是强类型计算机语⾔,所有的变量必须先定义才能使⽤,对于强类型⽽⾔主要就是指的数据安全,强类型的语⾔有很多,⽐如C、C++、python...计算机存储单位换算bit(位) - 是计算内部数据存储的最⼩单元,通过8个⼆进制位进⾏表⽰;byte(字节) - 是计算机中数据处理的基本单位,通常使⽤B来表⽰;8个bit(位) = 1B(字节)1024个B(字节) = 1KB1024个KB = 1MB1024个MB = 1GB....//整数类型byte a = 1;short b = 2;int c = 3;long d = 4L;//⼩数类型float e = 5.0f;duble f = 6.0d;//字符类型char g = 'a';//布尔类型boolean h = true;boolean i = false;数据类型的转换各数值相关数据类型⽀持类型上的转换,既可以把排序级别较低的类型转换成排序级别较⼤的类型,也可以把排序级别较⾼的类型转换成级别较低的类型(但会造成数据的丢失);数据的转换强制类型转换 - 在要转换的变量前使⽤:要转换的对应数据类型如- (int)⾃动类型转换 - 在不同的数值数据类型运算中,它会以排序级别较⾼的数据类型作为基础⾃动转换int number1 = 128;//正常byte的值是 -128 - 127,强制把int类型转换成byte会造成数据的不精确byte number2 = (byte)number1;int number3 = 519;float number4 = 1.0f;//在运算过程中因为float的排序级别⽐int⾼,那么它会⾃动转换成float类型在完成运算float number5 = number3 + number4;变量,静态变量,常量及作⽤域变量是指可以变化的值,通过数据类型和变量名可以在内存中申请⼀块存储的空间,通过内存的引⽤地址可以设置改变内存中存储的值或者修改值,所有的变量必须先赋值才可以使⽤;成员变量成员变量是指在类中与⽅法同级的位置中定义的成员变量,在该位置定义的变量可以不⽤设置值就可以使⽤,因为它会对类进⾏初始化,并完成初始化赋值,就算不给他们赋值也会有默认的初始值,他们的默认初始值都是最⼩的单元;作⽤域成员位置的变量,可以在⾮静态⽅法的所有位置使⽤,如果要在静态⽅法中使⽤,需要先创建对象;public class Variable{int a; //默认为:0float b; //默认为:0.0char c; //默认为:''boolean d; //默认为:false}局部变量局部变量是指在⽅法内部定义的变量,必须要先完成初始化后,才可以被使⽤;作⽤域局部位置的变量,外部⽆法使⽤,只能在⽅法内部使⽤,可以和外部的变量名称相同;public class Variable{int number;public void method(){int number = 3;//可以和成员位置的变量名称相同}}静态变量静态变量是指被static关键字修饰的变量,被修饰的变量⼜称为类变量;作⽤域静态变量可以作⽤域与所有⽅法中,静态变量只能定义在类的成员位置;public class Variable{static int number ;public static void main(String[] arags){System.out.println(number);}public void method(){System.out.println(numbe);}}常量常量是指不能被改变的值,它在创建到成员位置必须要先完成赋值,⼀旦被创建它的值是不允许被更改的;作⽤域它的作⽤域和成员变量相同public class Variable{final int NUMBER = 3.1415926;}静态常量静态常量是指从属于类的常量,在完成初始化以后是不可以被修改的,并且被public所进⾏修饰;作⽤域它的作⽤域和静态变量相同运算符算术运算符int a = 5;int b = 2;int number = a + b; //number = 7;int number = b - a; //number = 3;int number = a * b; //number = 10;int number = a / b; //number = 2,只取整数;double number = a / (double)b; //number = 2.5int number = a % b; //number = 1;⾃增⾃减运算符int a = 1;int b;b = a++; //b = 1; 先把a的值赋值给b,后a进⾏ +1 操作;b = a--; //b = 2; a前⾯进⾏了⾃增那么就是2,先把2赋值给b,然后进⾏ -1 操作;b = ++a; //b = 2; 前⾯a进⾏了⾃减那么就是1,先对a进⾏⾃增加1,然后在赋值给b;b = --a; //b = 1; 前⾯a是2,先对a进⾏⾃减1,在赋值给b;赋值运算符int a = 5;//把 5 赋值给 a;int b = 2;//把 2 赋值给 b;a += b; // a = 7(a+b的结果在赋值给a);a -= b; // a = 3;a *= b; // a = 10;a /= b; // a = 2;a %= b; // a = 1;关系运算符int a = 5;int b = 2;a > b; //truea < b; //falsea >= b; //falsea <= b; //truea == b; //falsea != b; //true逻辑运算符boolean a = true;boolean b = false;a &&b = false;//都true则true,第⼀个条件为false就不会在看第⼆个条件,直接返回falsea ||b = true;//⼀个条件为true则true,第⼀个条件为tre就不看第⼆个条件,直接返回true! a = false;//取反a &b = false;//2个条件都要执⾏a |b = true;三元运算符int a = 5;int b = 5;a ==b ? "等于":"不等于"; //为true返回第⼀个,为false返回第⼆个流程控制语句If语句if语句就是判断条件是否成⽴,成⽴就执⾏if中的代码,不成⽴就不进⼊;boolean flag = true;if(flag){System.out.println("...");}if...else语句if...else语句就是根据判断的条件是否成⽴,成⽴⾛if语句,不成⽴⾛else语句;boolean flag = true;if(flag){System.out.println("成⽴");}else{System.out.println("不成⽴");}if...else if语句if...else if⽀持多条件的判断,只会进⼊⼀个匹配的条件;boolean flag = true;boolean fail = false;if(flag){System.out.println("条件匹配");}else if(fail){System.out.println("条件匹配");}else{System.out.println("条件都不匹配");}switch条件控制语句witch语句从JDK1.7开始可以⽀持匹配:String字符串;注意事项:每个case 后⾯必须跟⼀个数值常量或字符串常量⽤于匹配;匹配的语句后⾯需要加上break关键字,防⽌case穿透;String week = "星期⼀";switch(week){case "星期⼀":System.out.println("今天是星期⼀");break;case "星期⼆":System.out.println("今天是星期⼆");break;case "星期三":System.out.println("今天是星期⼆");break;default:System.out.println("今天星期⼏都不是");}循环控制语句for循环语句for(初始值,条件表达式,更新)for(int i = 1 ; i <= 10 ; i++){System.out.println(i);}增强for循环for(接收类型的变量,表达式)int [] arrays = {1,2,3,4,5,6,7,8,9,10};for(int i : arrays){System.out.println(arrays);}while循环语句while(条件表达式)int number = 1;while(number <= 100){System.out.println(number);number ++;}do...while循环语句do{先把语句执⾏⼀遍}while(条件表达式);boolean flag = true;do{System.out.println("先执⾏⼀遍");flag = false;}while(flag);break和continue关键字break关键字结束循环的意思;for(int i = 1; i <= 100; i++){if(i == 10){System.out.println("打印10后结束循环");break;}}continue关键字跳过当前循环,进⼊下⼀次循环;for(int i = 1 ; i <= 10; i ++){if(i % 2 == 1){continue;}System.out.println("打印:"+i);}⽅法概述:⽅法就相当于使⽤多⾏代码进⾏组合去实现的⼀个功能⽚段,对代码进⾏封装利⽤,可实现多次调⽤;⽅法的定义修饰符返回值⽅法名称(形参形参名称){⽅法体}public class Function{public static void main(String[] arags){}public void method1(){}public void method2(String name,int age){}public static void method3(){}public int method03(){int a = 3;return a;}public int method04(int a,int b){if(a == b){System.out.println(a + "和" + b + "相等");return -1;}return a > b ? a : b;}}⽅法的重载⽅法的重载是指⽅法名称相同,传递的参数类型不同,个数不同,顺序不同与返回值⽆关;这样的⽅法被称为⽅法的重载;public class Function{public int max(int a,int b) {return a > b ? a : b;}public double max(double a,double b){return a > b ? a : b;}}形参和实参形参是指在()内部的参数,实参是指被真实传递的参数;public class Function{public static vid main(String[] args){Function function = new Function();function.max(3,5);}public int max(int a,int b) {return a > b ? a : b;}}可变参数在⽅法的()中我们有时候不知道要传递多少参数,那么我们可以传递⼀个数据类型紧跟后⾯加上...来表⽰;但需要注意的是⼀个⽅法中指允许⼀个可变参,如果有其他类型的参数,那么可变参数需要写在最后⾯;可变参数本质上就是⼀个数组;public class Function{public void method(String name,int... numbers){for(int num : numbers){System.out.println(num);}}}递归递归的本质就是⾃⼰调⽤⾃⼰,它可以解决⼀些业务,但效率和开销较⼤,对⼀些⽐较⼩的运算可以使⽤;//递归求3的阶乘public class Founction{public static void main(String[] args){}public int founction(int number){int result = 1;if(number == result){return result;}return number * founction(number - 1);}}数组数组就是⼀组数据的集合,Java中的数组必须存储和数据类型相符合的值,不允许与定义的数据类型不匹配;⼀旦数组被创建出来,它的长度就不允许被改变,数组有下标(索引)的概念,都是从0开始,如果操作的数据超过数组的长度那么就会报出下标索引越界异常[ IndexOutofBoundsException ];数组的定义int[] array = new int[3];int array[] = new int[3];int array[] = {1,2,3};数组的内存模型图数组的遍历⽅式int[] arr = new int[10];//⽅式⼀for (int i = 0; i < arr.length ; i ++) {System.out.println(arr[i]);}//⽅式⼆for (int num : arr) {System.out.println(num);}⼆维数组int[][] arr = new int[3][2];String[][] strArr = {{"hello","hello"},{"hi","hi","hi",{"java","java","java","java"}}Arrays⼯具类Arrays数组的⼯具类,是jdk已经帮我们提供好的⼀套数据⼯具类,⽅便我们对数据相关进⾏⼀些操作;int[] arr = {3,51,1,33,82,22,55,53};Arrays.toString(arr);//把数组变成⼀个字符串Arrays.sort(arr);//对数组内容进⾏升序排列Arrays.fill(arr,0);//把数组的内容全部进⾏替换为0常见算法冒泡排序public static int[] arr = new int[]{5, 2, 7, 4, 6, 9, 8, 13, 19, 11, 17, 15};//冒泡排序算法public static void popArithmetic(int[] arr) {//⽐较的轮数是数组长度-1for (int i = 0; i < arr.length - 1; i++) {//每次⽐较⼀轮,需要减少1次⽐较的次数for (int j = 0; j < arr.length - i - 1; j++) {//如果前⾯的数据⽐后⾯⼤,那么就交换位置if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}System.out.println("最终结果是:" + Arrays.toString(arr));}选择排序public static int[] arr = new int[]{5, 2, 7, 4, 6, 9, 8, 13, 19, 11, 17, 15};//选择排序public static void selectOrderArithmetic(int[] arr) {//⽐较的轮数是数组长度-1for (int i = 0; i < arr.length - 1; i++) {//每⽐较⼀次,需要减少1次⽐较的次数,会把⼩的先往前排for(int j = i+1;j<arr.length;j++){if(arr[i]>arr[j]){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}System.out.println("最终结果是:" + Arrays.toString(arr));}⼆分查找public static int[] arr = new int[]{1, 2, 3 , 4, 6, 7, 8, 13, 19};//2分查找法public static void branchFind(int [] arr,int number){int startNode = 0;int endNode = arr.length-1;int middle = 0;while (startNode <= endNode){//中间的指针由开始节点和结束节点计算得来middle = (startNode+endNode)/2;if(number == arr[middle]){System.out.println("找到了");break;}else if(number < arr[middle]){endNode=middle-1;System.out.println(number+"⼩于中间值,结束节点变更为中间节点-1"); }else if(number > arr[middle]){startNode = middle+1;System.out.println(number+"⼤于中间值,开始节点变更为中间节点+1"); }else{System.out.println("没有找到该元素");break;}}}。
<Java概述>·jdk: java develop kit(java开发工具包)·jre: java runtime environment(java运行时环境),如果仅仅为了运行java程序,而不是开发java项目,只需要安装jre 即可。
·程序设计语言种类:·机器语言·汇编语言·高级程序设计语言(编译型)如:c,c++·高级程序设计语言(解释型)如:java·编译(compilation) a.c-(编译)-a.out-执行·解释(interpretation) a.java-(编译)->a.class(字节码文件,在JVM上运行)-(解释)->二进制·java是一种解释型的,面向对象的编程语言。
1991,1995年推出。
Oak—>java。
c++不安全,不简单,指针危险。
java 自己操纵内存。
·98年12月—>版本java1.2,名为java2:J2ME、J2SE(标准版,corejava)、J2EE·java语言特点:·简单的·面向对象的(封装、继承、多态)·分布式的·解释性的·健壮的·安全的·与平台无关性!·多线程·动态的·可移植·java数组避免了覆盖数据的可能。
提供NULL指针检测、数组边界检测、异常出口、字节代码校验。
·JVM—java虚拟机。
·java解释器的执行过程:1、代码的装入(类class loader)2、校验3、程序的执行·java字节码的两种执行方式:1、just-in-time 即时编译方式(成机器代码)2、解释执行方式Interpreter<Java环境与基础>·Java平台由java应用编程接口(API)和java虚拟机(JVM)构成。
训练营:1、int a=0; a=a++; -→a的结果是0执行顺序是:int tmp = a; a=a+1; a=tmp;尝试计算:a = (a++) + (++a) + (a++);2、Linux系统(山寨版得unix)-只有一个跟/-把其它介质(USB,CD)映射到目录,这个目录叫做挂载点-命令以/开头是觉得路径-pwd-ls –al-cd-cp-mkdir-rm –r-mv-chmod-vi 的使用3、JDK---JAVA Development Tools---JRE---JAVA SE API---JVM4、图形编程实例:JFrameHelloWorld.javaWEEK_1_11、使用变量必须要手动初始化(赋值)--注意默认初始化和手动初始化的不同--使用长变量名,如果有多个单词,后面的首字母要大写2、变量的作用域--变量的作用于与声明变量所在的大括号内相同3、有关二进制---计算机内部都是二进制---计算机默认接受十进制转化为二进制,默认输出十进制---二进制的转换,-----基数-----权数4、有关十六进制十六进制实际是2进制的简写形式0x4e2d --→0100 1110 0010 11015、JAVA数字包装类的的进制转换--- Integer.toBinaryString()---Integer.toHexString()---Integer.toOctalString()6、八种基本数据类型(4整数、2浮点、char、boolean)7、关于数据溢出---Byte.MAX_VALUE = 0X7F---Short.MAX_VALUE = OX7FFF---Integer.MAX_VALUE=0X7FFFFFFF---int的常量,在byte范围内,能对byte赋值--byte a = 1; short a = 30000;---变量不能够转换为byte,例如---int a= 1; byte b = a+1;//错误byte b += 1;//正确,因为这是赋值操作6、浮点数---float(32位) 1位符号位,8位阶数,23位值---double(64位) 1位符号位,11位阶数,52位值结论(精度):long > double >int > float7、十进制小数表打我二进制浮点数的时候,会出现不能精确除尽的问题double a = 2.0 – 1.9; double a = 2.0 – 1.5double b = 0.1 double b = 0.5;a ==b ?//不等a==b?//相等这是因为2.0和1.5转换为二进制都能被除尽,因此不存在数据丢失而1.9是不能被除尽的8、字符数unicode的编码值,如’中’—>20013、0x4e2d char 是16位无符号整数‘A’→65-→0x00419、转义字符:---‘\’’‘\\’‘\b’‘\n’‘\u’‘\r’‘\u0000’是字符串的结束符10、强制类型转换11、方法调用WEEK_1_21、运算符---数学运算---关系运算== != < > >= <=---位运算~(取反码) &(按位与) |(按位或) ^(异或) >> <<等---布尔逻辑运算&& || ? :等------数学运算----数据溢出(上溢出)int a=0x7fffffff; int b = 0x0x7fffffffint c= a + b; //c=-2----运算精度问题(下溢出)Int a = 5; int b = a/2; //b=2;----时间的获取long now = System.currentTimeMillis(); //获取从1970到现在经过的毫秒数----取余运算---负数的取余结果是负数---整数部分产生一个周期性的运算---想要获取一个[0,n)之间的整数,需要取余a%n---字符串的运算字符串重载了加法,因此能够直接相加减,如下例:”1”+ “1”+ “1” -→1111 + ”1”+ “1”-→1111+ 1 + “1”-→211+ 1 + 1 -→ 31 + 1 + ‘1’-→ 51“HELLO”+ ‘1’+ ‘1’-→HELLO11---短路的逻辑运算(运算两侧不一定会都被执行) && || !非短路的逻辑运算(非短路运算是为了保证运算两侧都一定被执行)& |---条件运算符(条件运算符) ?结果1 :结果22、if…..else…3、switch(整数或者char){} //注意贯穿的break和不贯穿的break4、for(…;…;…){//循环体}WEEK_1_31、while(……){//…} do{//……..} while(….);---案例:等额本金还款2、数组Array---int[] arr = new int[3]; // int[] arr = new int[]{ }; //带有new的动态初始化---int[] arr = {3,2,1}; //静态初始化,只能用在数组的声明的时候3、数组的复制与数组长度的拓展--- Arrays.copyOf()--- System.arraycopy()--- arr = Arrays.copyOf( arr ,arr.length( ) + 1);--- 案例:文字竖排WEEK_1_41、选择排序2、冒泡排序3、插入排序4、系统的排序算法Arrays.sort() ---→内部采用了快速排序排序性能比较:快速排序> 插入排序> 选择排序> 冒泡排序---性能测试的方法long start = System.currentTimeMillis();//…测试代码块long end = System.currentTimeMillis();System.out.println(end - start);5、递归Recursion----堆栈的知识案例:双色球WEEK_1_5Tips:向一个连续的数组连续的添加元素的简单形式:a[i++] = element;案例:生成四位不重复的验证码1、UNIX /LINUX---绝对路径:以/开始的为绝对路径/root/tarena--- . 当前路径. . 上一级~个人主目录---cd 后面什么都不加= cd ~ 回到个人主目录---命令格式---command [-选项][参数] ls -a ~---以. 开头的是隐藏文件如mkdir .aa 创建一个隐藏文件夹.aa---ls -l ---授权信息r/w/x---创建者权限---同组内用户---其他用户---管道流| 将前一个命令的结果传递到后一个命令---例如:ls –al | more---文件夹的大小都是4096---chmod命令(改变文件模式)如:---chmod –x sd1103 去掉此文件的可执行权限x---chmod +x sd1103 加上此文件的可执行权限x---chmod =x sd1103 设置此文件只有可执行权限x注意:g----组内用户o---其他用户u----创建者本人例如:chmod u=rwx,o-x,g-x 创建者rwx,其他人和组内均不可执行数字权限形式:R w xU 1 1 1 ---→7G 0 0 1 -→1 -------→ chmod 710 sd1103O 0 0 0 -→0 (自己所有权限,组内可见,其他人不可见不可写)这种表示方法能够简便的改变文件权限,700,750都很常用---mv(move) mv aa bb(如果bb不存在则重命名,如果存在则一动aa到bb)---cp(copy)---cat/more 只读方式查看文本文件内容---grep 过滤常常与其它命令组合使用:cat password | grep root |more---rm 删除命令(删除文件夹需要递归删除rm –rf 递归强制执行)---echo回显---echo Hello>> ~/test.txt 重定向标准输出到test.txt文件中---创建文件touch---vi的另存为:w ~/aa/test.txt---打包命令tar -cvf (打包/可视/指定生成目标文件名) 例如:tar –cvf aa.tar aa ---释放tar tar –xf --→默认向当前目录释放---gzip 压缩例如gzip aa 会将文件夹aa压缩成aa.gz---gzip解压例如gzip –d 释放.gz文件---标准zip打包zip -r +文件名.zip +文件1 文件2….---zip的解压过程unzip + .zip文件默认解压到当前目录---设置环境变量:--EXPORT PATH = $PATH---echo PATH案例:设计备份脚本backup.shCd ~Mkdir tempCd tempCp ~/workspace ./tempTar –cf workspace.tar workspaceGzip workspace.tarCd ~Echo BackUp success\!作业:洗牌WEEK_1_6:1、ftp协议:----ftp是在本地执行命令,并不是在操作远程主机Ls cd ? put mput2、teln et命令----telnet是直接操作远程主机的,即远程主机有什么命令都可以执行本地----(exit) ----csh -----(exit) ----bash3、环境变量.profile文件存储了系统环境变量的设置Source命令可以用于测试编写的脚本PATH CLASSPATH3、关于JDK|---bin 开发工具(javac /java/jar….)|---jre java运行环境(JAVA RUNTIME ENVIRONMENT)| |---bin (JVM)| |---lib (JAVA API核心类库)| | |---rt.jar(核心类库,zip压缩)、|---src.zip(java API的源文件)4、系统拓展java命令的方式---shell .class的组合使用,另外注意配置环境变量5、Jar打包jar –cvf jar –xf清明节作业:五子棋WEEK_2_3(面向对象的程序设计OOP)1、面向对象(Object Oriented OO)------everything is object2、类Class3、类的修饰符:同类中同一package 其它package 子孙类Public 1 1 1 1Private 1 0 0 0Protected 1 0 0 1Default(默认) 1 1 0 0默认是default的修饰符4、new运算:创建实例对象,new运算将返回一个对象的引用(关于内存/堆/栈/池)引用不是对象、对象是存在堆内存中的,引用是栈内存中的指向堆内存某对象或者null 的指针5、编译错误(Compile error )和运行异常(RunTime Exception)6、构造器(构造方法)constructor类=→构造器==→实例对象构造器与类名必须一致构造器引用类得其它构造器,需要将其放在第一行方法签名的概念:方法名+ 参数列表7、this的关键词---this是对当前对象的引用---this是运行过程中产生的代表当前对象的引用,操作结束后这个临时引用将被释放---this用来简化构造器例如:this()调用本类空构造器8、java的参数传递规则:---java的参数传递均是基于值的复制(因此基本类型是复制值,引用类型是复制引用)TIPs:由于引用传递参数会使传入参数改变,因此建议结果都是有返回值带回,能够避免错误作业:圆的类:圆心、半径、点是否在圆内WEEK_2_41、复习总结:对于java中值传递的规则进一步理解:Java中的数据传递都是基于值得复制,是程序栈中值得复制,(栈中基本数据类型数据的值就是其真实值,而引用类型的值是其地址值),另外java不直接操作堆中对象,而是通过栈中的引用来操作对象,因此如果有多个引用同时指向同一个对象,其中任何一个引用对该对象的改变均会改变这个对象,而表现出其他引用也跟着改变。
Day 郑春光: tops777 V信chp1.语言基础基本语法、标识符、命名规范、八种基本类型、基本操作符、运算符chp2.选择结构if 、if else、if else if else、switch casechp3.循环控制while、do while、for、break、continuechp4.函数函数的三要素、return的用法chp5.数组一维数组、数组参数、数组返回值、数组增删、扩容、排序、二维数组chp6.面向对象类和对象、实例变量、构造方法、方法重载、引用的概念、this关键字chp7.面向对象三大特性封装、继承、多态、对象创建过程、访问修饰符、super关键字、方法重写、instanceof chp8.三个修饰符static、final、abstractchp9.接口基本语法、接口的作用、解耦合chp10.常用类内部类、Object、包装类、Stringchp11.集合框架Collection、List、Set、Map的接口及其实现类、迭代、Hash 算法与 hashCode 方法、comparable、泛型chp12.异常概念、分类、产生、传递、处理、自定义异常chp13.线程概念、创建、状态转换、数据共享、同步chp14.I/O框架File类、流的分类、基本字节流、基本字符流、字节过滤流、字符过滤流、桥转换、对象序列化chp1.语言基础一、Java语言:1. 由来:I. Sun Microsystem 于1995年推出的Java面向对象的程序设计语言II. 1996年发布1.0版本III. 1999年发布J2SE、J2EE、J2MEIV. 2005年更名为JavaSE、JavaEE、JavaME Java Platform Standard Edition Enterprise MicroV. 2009年被Oracle收购VI. 2011年发布Java 7.0VII.2014年发布Java 8.02. 特点:I. 纯面向对象(使用计算机模拟现实世界,解决现实问题,贴近人类思维模式)。
单元要点
学习目标
理解构造方法的含义
理解构造方法的特点
理解重载的概念
理解重载方法的意义
随堂测验
1. 银行账户管理系统:
要求:
编写一个账户类(Account);
属性:id账号号码(15位)、passWord账户密码、nam姓名、persionId
身份证号、balance账户余额;
方法:saveMoney存钱、fetchMoney取钱
2. 定义一个圆柱体类,并创建相应的对象,然后计算圆柱体的底面积与体积。键盘输入底
半径和高。
3. 定义一个Student类,包含内容如下:
成员变量:学号、姓名、性别、班干部否、数学、语文、外语
成员方法:输入、总分、平均分
编程实现这个类,并调用相应的方法输入数据,计算某个人总分和平均成绩
附加要求:计算所有输入学员的各科平均成绩
1、下面关于构造方法的说法,正确的是( A )。
A: Java中的构造方法名必须和类名相同
B: Java语言中构造方法不可以重载
C: Java语言规定构造方法没有返回值,可以用void声明
D: 类的私有方法也可以被其他类直接访问
2、对于面向对象的程序设计思想,下列不正确的是:( B )
A:一切事物都可以看作是对象。
B:一切规则都不能看作是对象。
C:可以将所有正方形的共性抽取出来,设计一个矩形类。
D:继承是面向对象的一个特征。
3、对于面向对象的程序设计思想,下列正确的是:( C )
A:一切事物都可以看作是类。
B:一切规则都不能看作是对象。
C:可以将所有正方形的共性抽取出来,设计一个矩形类。
D:继承是面向对象的一个方法。
4、下面关于构造方法的说法,不正确的是( C )。
A: Java中的构造方法名必须和类名相同
B: Java语言中构造方法可以重载
C: Java语言规定构造方法没有返回值,可以用void声明
D: 类的私有方法只能被本类直接访问
5、下面的选项中,哪个项不属于“学生类”的属性( C )。
A:年龄
B:籍贯
C:吃饭
D:班级
6、下面关于构造方法的说法,正确的是(A)
A、Java中的构造方法名必须和类名相同
B、 Java语言规定构造方法不可以重载
C、 Java语言规定构造方法没有返回值,可以用void声明
D、类的私有方法也可以被其他类直接访问
7、关于构造方法,描述错误的是(B)
A、构造方法没有返回类型
B、构造方法的返回类型是void
C、构造方法名与类名相同
D、一个类中,不显式的写出构造方法时,会有一个默认的空构造方法
本节小结
学习小结
构造方法的定义
构造方法的重载
构造方法的特点
构造方法重载和普通方法重载的区别
思考题
1. 在测试类中,main方法可以重载吗?
2. 重载方法的就近原则如何理解?