java笔记
java基础知识点笔记

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接口。
Java读书笔记

Java读书笔记第一篇:Java读书笔记读书笔记1、类和对象:类是用来定义一组对象共同具有的状态和行为的模版。
而对象是现实世界中个体或事物的抽象表示,并且封装了它们的属性和行为。
2、为了防止命名冲突,Java采用了管理类文件的机制,即类包机制。
(package)定义包名的语法格式:“package包名;”Java命名规则要求包的命名需要使用小写字母。
3、成员变量和成员方法:1成员变量是在类体中定义的变量即全局变量,○成员变量一般用于定义对象的状态。
成员变量是给对象使用的,每个对象被创建后都会有属于自己的属性,即成员变量。
通过修改这些属性,从而改变对象的某个状态。
2成员方法是对象行为的描述。
○定义成员方法的语法格式:“[修饰符] 返回值类型方法名([形参表]){······//方法体}”修饰符:可以是:publicprivateprotactedstaticfinall等;返回值类型:如果方法需要返回值,必须这里声明方法的返回值类型,可以是基本数据类型(int short double booleanvoid等),也可以是对象类型如:数组、字符串等。
形参表:(可选部分)说明方法被调用时应该向它传递的数据。
形参表可以有一个也可以有多个,当有多个形参时每个形参之间要用“,”隔开。
1创建对象:创建对象使用到new语句。
4、对象:○声明并创建对象的语法格式如下:“类名对象名=new 类构造方法()”构造方法:构造方法是类创建对象是必须执行的方法,用于构造一个新的对象并初始化对象属性。
2访问对象的属性:○语法格式:“对象名.属性”3执行对象的行为:○对象的行为就是对象的成员方法,通常说调用或执行对象的某个方法。
语法格式:“对象名.成员方法名();”4对象的销毁:Java提供了垃圾回收机制,对不再使用的对象会自动销毁,也可○以在程序中显式的为某个对象赋null值,使对象不再被使用。
JAVA(J2SEJ2EE)学习笔记090911

JAVA(J2SE/J2EE)JAVA(J2SE/J2EE)学习笔记学习笔记/kv2004Java Paradise 群号:81556987,欢迎传播!JA V A(J2SE)基础一、JAVA 语法基础标识符-date:0908111.什么叫标识符?就是一个名字2.在JAVA 中,遇见的标识符有类名、方法名和变量名。
3.标识符的命名规则:i.标识符有字母、数字、下划线(_)以及美元($)符号组成。
ii.标识符不能以数字开头iii.不能和JAV A 中的关键字或者保留字重名4.标识符的命名规范:i.最好不要一下划线(_)或者美元($)符号开头ii.如果有多个单词组成,那么每个字符的首字符都大写。
例如:class Student{}class HelloWorld{}iii.如果标识符是方法名或者变量名:首字母应该小写;如果有多个单词组成,那么从第二个单词开始,首字母大写。
例如:String name;//用户名int stuAge;//学生的年龄iv.标识符最好有一定的意义。
int 整数=1;v.如果是常量名,那么全部字母都大写。
final double PI=3.1415926;关键字-date:0908111.什么叫关键字?具有特殊意义的一些单词。
2.举例说出几个关键字byte short int long float double char booleanpublic private protectedvoidreturntrue falsestatic final abstractif elseswitch caseforwhiledotry catchcontinuebreak数据类型的转换-date:0908111.基本数据类型可以相互转换(除boolean)2.可以将低精度的数据类型直接赋值给高精度的数据类型int i=1;short s=1;i=s;//可以自动进行转换3.当把高精度的数据类型赋值给低精度的数据类型时,必须强制类型转换。
java精华笔记

在一个Java程序中,确认:- package语句 - import语句- 类、成员函数以及变量 - 构造函数 - 重载方法 - 覆盖方法 - 父类构造函数有些程序语言,包括Java,允许在数据类型的声明和操作该类型变量的代码的声明之间有紧密的联系。
这种联系通常被称为抽象数据类型。
因此Java编程语言中的所有方法都属于一类。
不象C++程序,Java软件程序不可能在类之外的全局区域有方法。
方法是一个对象的属性并且能作为单个单元的一部分与它所在对象的数据发生密切的相互作用,这个是一个关键的面向对象的概念。
如果增加一个带参数的构造函数声明到一个类中,该类以前没有显式构造函数,那么将失去该缺省构造函数。
基于这一点,对newXxx()的调用将会引起编译错误。
在面向对象的语言中,提供了特殊的机制,允许程序员用以前定义的类来定义一个类。
如下所示,可用关键字extends来实现:public class Employee {String name;Date hireDate;Date dateOfBirth;String jobTitle;int grade;... }public class Manager extends Employee {String department;Employee [] subordinates;... }可以创建具有共同类的对象的收集(如数组)。
这种收集被称作同类收集。
Java编程语言有一个对象类,因此,由于多态性,它能收集所有种类的元素,正如所有类都扩展类对象一样。
这种收集被称作异类收集。
Java编程语言允许一个类仅能扩展成一个其它类。
这个限制被称做单继承性构造函数不能继承关键字super请注意,super.method()格式的调用,如果对象已经具有父类类型,那么它的方法的整个行为都将被调用,也包括其所有副面效果。
该方法不必在父类中定义。
它也可以从某些祖先类中继承。
Instanceof运算符instanceof运算符的目的。
JAVA编程思想笔记

客户/服务器计算技术大概占了所有程序设计行为的一半。 2、Web 就是一台巨型服务器 Web 发展过程:1、简单单向过程(对服务器产生一个请求,它返回一个文件,浏览器软 件根据本地机器的格式解读文件);2、客户可以将信息反馈给服务器;3、客户机执行运算任 务 客户端浏览器运行程序的能力,这被称为“客户端编程” 1.13.2 客户端编程 Web 最初的“服务器-浏览器”设计是为了能够提供交互性的内容,但是交互性完全由服 务器提供。服务器产生静态页面,提供给只能解释并显示它们的客户端浏览器。HTML 包含有 简单的数据收集机制:文本输入框、复选框、单选框、列表和下拉式列表以及按钮——它只 能被编程来实现复位表单上的数据或提交表单上的数据给服务器。这种提动作通过所有的 Web 服务器都提供的通用网关接口(common gateway interface,CGI)传递。提交内容会告诉 CGI 应该如何处理它。 可以通过 CGI 做任何事情。CGI 程序复杂而难以维护,并同时响应时间过长的问题。响 应时间依赖于所必须发送的数据量的大小,以及服务器和 Internet 的负载。 问题的解决方法就是客户端编程。意味着:Web 浏览器能用来执行任何它可以完成的工 作,使得返回给用户的结果各加迅捷,而且使得网站更加具有交互性。 客户端编程的问题是:它与通常意义上的编程十分不同,参数几乎相同,而平台却不同。 Web 浏览器就像一个功能受限的操作系统。 1、插件(plug-in) 插件的价值在于:它允许专家级的程序员不需经过浏览器生产厂家的许可,就可以开发 某种语言的扩展,并将它们添加到服务器中。提供了一个“后门”,使得可以创建新的客户端 编程语言。 2、脚本语言(scripting language) 通过使用脚本语言,可以将客户端程序的源代码直接嵌入到 HTML 页面中,解释这种语言 的插件在 HTML 页面被显示时自动激活。优点是易于理解,因为它只是作为 HTML 页面一部分 的简单文本,当服务器收到要获取该页面的请求时,它们可以被快速加载。缺点是代码会暴 露给任何人去浏览(或窃取)。 JavaScript 语言优缺点。用于创建更丰富、更具有交互性的图形化用户界面(graphic user interface,GUI)。 3、Java Java 是通过 applet 以及使用 Java Web Start 来进行客户端编程。 4、备选方案 Macromedia 的 Flex,允许创建基于 Flash 的与 applet 相当的应用。ActionScript 语言 是基于 ECMAScript 的,Flex 使得在编程时无需担心浏览器的相关性,因此远比 JavaScript 要吸引人得多。值得考虑的备选方案。 5、.NET 和 C# 它要求客户端必须运行 Windows 平台。 6、Internet 和 Intranet
Java学习笔记(必看经典).pdf

比较面向过程的思想和面向对象的思想: 面向过程的思想:由过程、步骤、函数组成,以过程为核心; 面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。 面向过程是先有算法,后有数据结构。 面向对象是先有数据结构,然后再有算法。
关系运算符:instanceof a instanceof Animal;(这个式子的结果是一个布尔表达式) a 为对象变量,Animal 是类名。 上面语句是判定 a 是否可以贴 Animal 标签。如果可以贴则返回 true,否则返回 false。
在上面的题目中: a instanceof Animal 返回 True, a instanceof Dog 也返回 True,
This 表示当前对象。
Public void printNum(){ Int number=40; System.out.println(this.number);
} 此时打印的是实例变量,而非局部变量,即定义在类中而非方法中的变量。
This.number 表示实例变量。 谁调用 this.number 那么谁即为当前(this)对象的 number 方法。
可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法: public student(string name,int a){ } public student(int a,string name){ } 为两个不同的构造方法。 如果我们未给系统提供一个构造方法,那么系统会自动提供一个为空的构造方法。 练习:写一个类,定义一个对象,定义两个构造方法:一个有参,一个无参。 (编写一个程序验证对象的传递的值为地址) 注意下面这种形式: static void changename(student stu){stu.setName “LUCY”} 注意生成新的对象与旧对象指向无关,生成新对象生命消亡与旧对象无关。
Java基础笔记

public void dosome(Object----- o ){}//任意个参数
特殊(保留)关键字:goto const
不是关键字(字面常量):true false null
基本数据类型
byte short char int long float double boolean(true/false)
Math.sqrh(N) //开平方
int 的范围没有float大,但精度高
int a =0x7fffffff,b=0xffffff0;//a-b=15
float fa=a,fb=b; //精度损失
float double的范围比 int 大
字符是一个16位无符号整数,0~65535;采用Unicode编码;支持全球文字,也称i8n(国际化(缩写))。
数组Array
int [] arr = new int[10]
数组类型 数组类型变量(引用) 数组对象 数组长度
int是基本类型,与int[]不同
length 数组长度
1) 数组声明 int[] ary1;
2) 数组创建 ary1 = new int [3];//数组自动初始化,值为零 0 0.0 false \u0000 null ;元素很多的时候
JAVA_HOME=/home/tarena/tools/jdk1.7.0_17/bin
CLASSPATH=. //类文件的搜索路径
管理员权限获取[操作过了就跳过此步骤]
sudo passwd root
输入密码 tarena
设定root 密码 tarena
配置JDK和JRE环境,添加环境变量
12、启动数据库
#> bin/mysqld_safe --user=mysql &
第一章-Java基础笔记

第⼀章-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;}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前提•j ava对大小写敏感,如果出现了大小写拼写错误,程序无法运行• java的核心优势:跨平台•main方法是java应用程序的入口方法,它有固定的书写格式:—public static void main(String[] args){…}•在java中,用花括号划分程序的各个部分,任何方法的代码都必须以“{”开始,以“}”结束,由于编译器忽略空格,所以花括号风格不受限制。
•java一个语句可以跨多行。
中每个语句必须以分号结束,回车不是语句的结束标志。
•摩尔定律,IT行业每隔一年半就会翻一番。
•一个源文件可以有class,但是public class至多只能有一个,且public class的类名必须和文件名保持一致。
•//单行注释(注释内容从//到本行结尾)/**/多行注释(多行注释不能嵌套)•dos常用命令:cd 进入一个目录cd.. 进入上一个目录dir 查看目录里面的内容上下键查找敲过的命令Tab键命令自动补齐•标示符identifier1.作用:给变量、类和方法命名。
2.java标识符有如下命名规则:①标识符必须以字母、下划线_、美元符$开头②标识符其他部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。
③java标识符大小写敏感,且长度无限制。
④不可以是java的关键字。
3.注:java不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国字符集。
因此,这里的字母的含义:英文。
汉字等等。
(不建议大家使用汉字来定义标识符!)4.不合法的标识符:int 1a= 3; //不能用数字开头int a#= 3; //不能包含#这样的特殊字符intint= 3; //不能使用关键字•一个字节8位•java常用单词:public 公共的class 类static 静态的void 无返回类型main 主要String 字符串args参数System 系统的 out 输出设备 print 打印\t 输出8个空格相当于一个制表位 \n 换行一、JAVA 基本数据类型•Java 是一种强类型语音,每个变量都必须声明其类型。
1.整数类型注:比long 还大的是big integer (大整数的意思)•Java语言整型常数的三种表示形式:十进制整数,如99,-500,0八进制整数,要求以0开头,如015[八进制里面0.1.2.3.4.5.6.7.10(表示8)]十六进制整数,要求以0x或0X开头,如0x15[16进制里0.1.2.3.4.5.6.7.8.9.a(表示10).b.c.d.e.f.10(表示16)]•Java语言整型常数的默认为int型,声明long型常量可以后加‘l’或‘L’(建议使用大写,小写容易误认为数字1)如:long a=555555; //不出错,在int的表示范围内(21亿)long b=55555555555555; //不加l出错,已经超过int表示的范围。
此处应为long b=55555555555555L2.浮点类型double d=1.0/10System.out.println(f==d); //false使用总结:- 默认是double- 浮点数存在舍入误差,很多数字不能精确表示。
如果需要进行不产出舍入误差的精确数字计算,需要使用BigDecimal(大小数的意思)类。
- 最好避免比较中使用浮点数(有误差,例如float f=0.1f 不等于double d=1.0/10)- float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足要求- double表示这种类型的数值精确到float类型的两倍,又被称作双精度,绝大部分应用程序都采用double类型- 浮点数值默认为double类型,要将其变成float类型,需要在后面加F/f,如3.14F3字符型•单引号用来表示字符的常量,例如’A’是一个字符,它与”A”是不同的,”A”表示含有一个字符的字符串•char类型用来表示在Unicode编码表中的字符•Unicode编码被设计用来处理各种语言的所有文字,他/它占2格字节,可以允许有65536格字符;•java语言中还允许使用转义字符’\’来将其后的字符转变为其他的含义,char c2 =’\n’; //代表换行符•char是在0-65535范围,运算时只当作整数来运算•可以把0-65535之间的整数直接转型为char4布尔型(一位,不是一个字节)•boolean类型有两个值,true和false•boolean类型用来判断逻辑条件,一般用于程序流程控制实践:-请不要这样写:if(is==true&&done==false),只有新手才那样写。
对于任何程序员if(whether&&!done)都不难理解吧。
所以去掉所有的==fasle和==true。
二、数据类型转换•图中黑色实线表示无数据丢失的自动类型转换,而红色的虚线表示在转换时可能会精度的损失•容量小的数据类型可以自动转换为容量大的数据类型。
inti=3;double d=i;float f=I;double d2=f;•特例:可以将整型常量直接赋值给byte,shot,char等类型的变量,而不需要进行强制类型转换,只要不超出其表数范围•做所有的二元运算符(+-*/%),都会有类型提升的问题•操作比较大的数时,要注意是否溢出,尤其是整数操作时。
例如://一个人70年心跳多少次long times = 70*60*24*365*70;System.out.print(times); //这个时候就会溢出,所以要在数字后面将一个L来提升类型,但是加的时候最好加到第一位数字后面,因为加在后面有可能前面就已经溢出了,后面再提升类型还是溢出的。
此处应为:long times = 70L*60*24*365*70•小数强制转型整数时只取小数的整数部分三、变量和常量1.变量•变量在使用前必须对其声明,只有在变量声明以后才能对其分配相应长度的储存单元。
变量包括声明+初始化(赋值)•变量的声明可以在一行里面声明多个,一般建议一行声明一个•局部变量:方法或语句块内部定义的变量—在使用前必须先声明和初始化•实例变量(成员变量):—方法外部、类的内部定义的变量—如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量初始化值是16位的0,布尔型默认是false)\u0000例:public class TestVarialbe {int t; //实例变量(成员变量)public class void main(String[]args){int a;a=5;intx,y,z //局部变量}}2.常量•只能被初始化一次•常量一般用大写3.命名规范•所有变量、方法、类名:见名知意•变量、方法名:—首字母小写和驼峰原则—run(),runRun(),ageageNewminthSalary•常量(final):—大写字母和下划线:MAX_VALUE—例:public class Constants{ public static void main(String[] args){final double Pl = 3.14; //Pl = 3.15; // 这是错误的,加上final 以后就是常量就不能再赋值了 } }• 类名:—首字母大写和驼峰原则:Man, GoodMan四、运算符•java 语言支持如下运算符:• —算术运算符: + ,-, *, /,%(前面为二元运算符后面为一元运算符),+ +,- -—赋值运算符: =—关系运算符:> ,<, >= ,<= ,= =, ! = instanceof —逻辑运算符:&&,||,!—位运算符:&,|,^, ~ , >>, << , >>>(了解!!!) —条件运算符?:—扩展赋值运算符: + =, - =, *= ,/= • 二元运算符类型提升:— 整数运算:•如果两个操作数有一个为long ,则结果也为long• 没有long 时,结果为int 。
几十操作数全为shot ,byte ,结果也是int — 浮点运算:•如果两个操作数有一个为double ,则结果为double 。
•只有两个操作数是float ,则结果为float 。
•一元运算符(+ + ,- -): int a = 3;int b = a++; //执行完后,b=3.先给b 赋值,再自增。
int c = ++a; //执行完后,c=5.先自增,再给5赋值。
•布尔逻辑表达符• 逻辑与:&&false)• 逻辑或:||• 逻辑非:! • 逻辑与和逻辑或采用短路的方式—Boolean c = 1>2&&2>(3/0);&&不会抛异常;说明没有执行3/0; •位运算符:~ ——取反&——按位与| ——按位或 ^ ——按位异或(相同为0相异为1) <<——左移运算符 >>——右移运算符 例:int m =8; //1000int n =4; //0100System.out.println(m&n); //0•笔试可能会考:—左移一位相当于乘2。
—右移一位相当于除2取商。
int a = 3*2*2;int b = 3<<2; //相当于:3*2*2;int a = 12/2/2;int b = 12>>2;•字符串连接符—“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
例如String str = “5”;int s = 4;System.out.println(s+str); //这样输出来的是45,因为含有字符串str,所以“+”自动转换为连接符•扩展运算符:举例:•条件运算符(三元运算符,三目运算符)•三目条件运算符,语法格式:—x?y:z—其中x为boolean表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。
例:int a =3;int b=5;String str=””;/*if(a<b){str = “a<b”;}else{str = “a>b”}*/str = (a<b)?”a<b”:”a>b”;System.out.println(str);•经常用来代替简单的if-else判断!•运算优先级的问题•不需要刻意的记优先级关系•先加减后乘除,表达式里面优先使用小括号来组织!!五、控制语句•if•if语句对条件表达式进行一个测试,若测试为真,则执行下面的语句,否则跳过该语句•附:Math类的使用:intI = (int)(6*Math.rathom());//[0,5]之间的数。