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;}}}。
(完整word版)Java学习笔记(必看经典)
诚信、创新、开放、合作JAVA的面向对象编程--------课堂笔记面向对象主要针对面向过程。
面向过程的基本单元是函数。
什么是对象:EVERYTHING IS OBJECT(万物皆对象)所有的事物都有两个方面:有什么(属性):用来描述对象。
能够做什么(方法):告诉外界对象有那些功能。
后者以前者为基础。
大的对象的属性也可以是一个对象。
为什么要使用面向对象:首先,面向对象符合人类看待事物的一般规律。
对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。
方法的定义非常重要。
方法有参数,也可能有返回值。
注意区分:对象(本身)、对象的实现者、对象的调用者。
分析对象主要从方法开始。
我们通过类来看待对象,类是对象的抽象。
其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。
对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。
这样才能使每个对象本身做成最好的。
对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。
实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。
可复用性是OOP的基础。
比较面向过程的思想和面向对象的思想:面向过程的思想:由过程、步骤、函数组成,以过程为核心;面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。
面向过程是先有算法,后有数据结构。
面向对象是先有数据结构,然后再有算法。
在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。
开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。
从语法上来看,一个类是一个新的数据类型。
在面向对象编程中,除了简单数据类型,就是对象类型。
定义类的格式:class Student{代码}注意类名中单词的首字母大写。
实例变量:定义在类中但在任何方法之外。
(New出来的均有初值)局部变量:定义在方法之中的变量。
局部变量要先赋值,再进行运算,而实例变量均已经赋初值。
这是局部变量和实例变量的一大区别。
java完美经典读书笔记
java完美经典读书笔记第一章概述第二章JAVA语言基础关键字:基本数据类型:bytehortintcharlongfloatdoubleboolean循环控制:dowhileforbreakcontinue分支控制:ifelewitchcaedefaultbreak方法变量和类得修饰府:privatepublicprotectedfinaltaticabtractynchronizedvolatiletrictf ptranient字面值常量:faletruenull方法相关得关键字:returnvoid包相关得关键字:packageimport异常处理:trycatchfinallythrowthrow对象相关:newe某tendimplementuperclaintanceofthi很多算术运算操作可以产生浮点型无法表达的数字,如无限大,无限小等,这些数据的表达通过浮点数封装类(Float和Double)所提供的特殊属性来表达。
Float.NaN非数字Float.NEGATIVE_INFINITY无限小Float.POSITIVE_INFINITY无限大Double.NaN非数字Double.NEGATIVE_INFINITY无限小Double.POSITIVE_INFINITY无限大数据类型的自动转换图:char--->{int-->long-->float-->doublebyte-->hort-->{内置类对应的基本类型:Byte-->byte;Short-->hort;Integer-->int;Long-->long;Float-->float;Double-->doubleBoolean-->boolean;Character-->char;String-->char[]将基本数据类型转为String类型:tringtr1;intintv1=300;tr1=String.valueOf(intv1);将tring类型转为基本数据类型:tringtr1="126";inti1=Integer.pareInt(tr1);取得tring对象内含的char[]值,必须使用它的toCharArray()方法来取得。
Java学习笔记
JA V A设计目标:创建一种面向对象程序设计语言;提供程序运行的解释环境,使程序代码独立于平台;吸收C和C++的特点,使程序员容易掌握;去掉C和C++中影响健壮性的部分,如指针,内存申请和释放,无条件转移语句等;提供多线程机制;提供代码检验机制以保证安全性;Java三种核心机制:Java虚拟机(Java V irtual Machine)垃圾收集机制(Garbage collection)代码安全检测(Code Security)Java程序分类Java Application以main()方法作为程序入口,由java解释器加载执行。
Java Applet没有main()方法作为程序入口,由浏览器或appletviewer加载执行。
Java数据类型的划分基本:数值(byte,int,long,short),小数(float,double),字符(char),布尔(boolean)引用:类,接口(interface),数组Java基本数据类型Java中定义了四类/八种基本数据类型:逻辑型:boolean文本型:char整数型:byte,short,int,long浮点型:float,double方法的重载Java中方法是可以重载的:方法名称相同,但可以根据不同的参数完成不同的功能。
方法重载的定义:1:方法名称相同2:参数的个数和类型不同复制数组System类的arraycopy()方法提供了数组元素复制功能System.arraycopy(source,0,dest,0,source.length):复制源数组中从下标0开始的source.length个元素到目的数组,从下标0的位置开始存储。
Java中提供大量的API方法,熟练使用这些API可以编写出人意的程序。
面向对象面向对象的三大特征:封装:(Encapsulation):对外部不可见。
继续:(Inheritance):扩展类的功能。
多态:(Polymorphism):(面向对象语言中最重要的)-方法的重载-对象的多态类与对象:类是对某一类事物的描述,是抽象的,概念上的定义;对象是实际存在的该类事物的每个个体,也称实例(instance)。
狂神说Java笔记-Java入门
狂神说Java笔记-Java⼊门Java⼊门狂神说Java笔记,Java三⼤版本JavaSE:标准版,基础,初学者主要学习并应⽤这⼀部分。
主要⽤来开发桌⾯程序(⼩游戏)和控制台开发JavaME:嵌⼊式开发,⽤于⼿机和⼩家电,已经不⾏了JavaEE: Java企业版,最⼴泛的应⽤,⽤于web端和服务器开发,JavaSE是JavaEE的基础JDK、JRE和JVMJDK:Java Development Kit,Java开发⼯具,包含JREJRE: Java Runtime Environment,Java运⾏时环境,包含JVMJVM:Java Virtual Machine,Java虚拟机,Java跨平台的核⼼,屏蔽了不同系统的底层环境Hello World 使⽤终端输出Hello World!1. 打开终端后,转到⽬标⽬录下。
cd + 路径,OS系统可以在输⼊"cd "后直接拖拽⽬标⽂件夹到终端窗⼝2. 新建.java⽂件:vi hello.java3. 编写代码public class hello{//class名要和⽂件名⼀致//class名最好⾸字母⼤写public static void main(String[] args){System.out.print("Hello, World!");}}4. 编译.java⽂件,⽣成class⽂件:javac hello.java(必须写.java后缀)5. 运⾏class⽂件:java hello(不写后缀)可能出现的问题1. 单词⼤⼩写不⼀致,java是⼤⼩写敏感的2. 输出中⽂时可能会出错3. ⽂件名和类名不⼀致4. 符号使⽤了中⽂5. 环境配置不对编译型和解释型编译型:把源代码全部编译成⼆进制代码可执⾏的程序,然后直接运⾏这个程序解释型:源代码翻译⼀句,执⾏⼀句,直到结束 Java既有编译型的特征,也有解释型的特征:Java代码需要先编译,不进⾏编译⽆法运⾏Java代码编译后⽆法直接运⾏,需要在JVM上解释运⾏IDEA IDE:Integrated Development Environment 集成开发环境,⽤于提供程序开发环境的应⽤程序。
Java基础笔记狂神说版
Java基础笔记狂神说版Java基础学习笔记(狂神说版)三、Java⽅法(⼀)⽅法的重载1. 重载的概念:重载就是在⼀个类中,有相同的函数名称,形参不同的函数。
2. ⽅法重载的规则:(1)⽅法名必须相同(2)参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)(3)⽅法的返回类型可以相同,也可以不同(4)仅仅返回类型不同不⾜以成为⽅法的重载3. 实现理论:⽅法名称相同时,编译器会根据调⽤⽅法的参数个数,参数类型去逐个匹配,以选择对应的⽅法,如果匹配失败,则编译器报错(⼆)⽅法的可变参数可变参数(不定项参数):JDK1.5开始,Java⽀持传递同类型的可变参数给⼀个⽅法在⽅法声明中,在指定参数类型中加⼀个省略号(...)⼀个⽅法中只能指定⼀个可变参数,他必须是⽅法的最后⼀个参数,普通参数声明必须在其之前(三)⽅法的递归递归就是:A⽅法调⽤A⽅法!就是⾃⼰调⽤⾃⼰递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,⼤⼤减少了程序的代码量。
递归的能⼒在于⽤有限的语句定义对的⽆限集合。
递归结构包括两个部分:(1)递归头:什么时候不调⽤⾃⾝⽅法。
如果没有头,将陷⼊死循环。
(2)递归体:什么时候需要调⽤⾃⾝⽅法。
四、Java数组(⼀)数组的概念数组的定义:数组是相同类型数据的有序集合。
数组描述的是相同类型的若⼲个数据,按照⼀定的先后次序排列组合⽽成。
其中,每⼀个数据称作⼀个数组元素,每个数组元素可以通过⼀个下标来访问他们。
数组的四个基本特点:(1)其长度是确定的。
数组⼀旦被创建,它的⼤⼩就是不可以被改变的。
(2)其元素必须是相同类型,不允许出现混合类型。
(3)数组中的元素可以是任何数据类型,包括基本类型和引⽤类型。
(4)数组变量属引⽤类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
数组本⾝就是对象,Java中对象是在堆中的,因此数组⽆论保存原始类型还是其他对象类型,数组对象本⾝是在堆中的。
韩顺平java全部内容笔记
韩顺平java全部内容笔记韩顺平是一位伟大的计算机科学家,他的Java全部内容笔记,是学习Java的非常好的资料。
该笔记共有近1000页,内容全面详细,涵盖了Java的各个方面,以下是简单介绍:第一部分:Java基础1. Java入门:简介、JDK、Java开发环境的搭建、Hello World程序等。
2. 变量与常量:Java的数据类型、变量的定义与使用、常量的定义与使用等。
3. 运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符等。
4. 控制流程:if语句、switch语句、for循环、while循环、do-while循环等。
5. 数组:一维数组、二维数组、数组排序、数组查找等。
6. 方法:方法的定义与使用、传递参数、返回值等。
7. 面向对象:面向对象的基本概念、类的定义与使用、封装、继承、多态等。
8. 类与对象:类与对象的关系、构造方法、对象成员变量、对象的引用等。
9. 抽象类与接口:抽象类的定义与使用、抽象类与普通类的区别、接口的定义与使用、接口的实现等。
10. 异常处理:异常的概念、异常的分类、异常处理的机制、自定义异常等。
11. 泛型:泛型的定义与使用、泛型类、泛型方法、泛型限定等。
12. 多线程:线程的概念、线程的创建与启动、线程的生命周期、线程的同步、线程通信等。
13. 反射:反射的概念、反射的使用、反射的用途、动态代理等。
14. 注解:注解的概念、注解的使用、自定义注解等。
15. 枚举:枚举的概念、枚举的使用、枚举的用途等。
16. IO流:IO流的基本概念、字节流、字符流、文件读写、序列化等。
17. 网络编程:网络编程的基本概念、Socket编程、服务器与客户端、TCP/UDP等。
18. 数据库编程:数据库的基本概念、JDBC编程、SQL语句、事务等。
19. 集合框架:集合框架的基本概念、ArrayList、LinkedList、HashSet、HashMap 等。
20. JavaWeb编程:Servlet编程、JSP编程、Struts框架、Spring框架、Hibernate 框架等。
java程序设计教程第二版笔记
java程序设计教程第二版笔记以下是一些可能的Java程序设计教程第二版的笔记内容:1. Java语言的特点:Java是一种面向对象的编程语言,具有简单性、可移植性、安全性等特点。
它支持多线程编程,可以方便地实现并发控制和多线程并发访问。
2. Java基础语法:Java的基础语法包括变量、数据类型、运算符、控制语句等。
其中,变量是存储数据的容器,数据类型用来指定变量的类型,运算符包括算术运算符、比较运算符等,控制语句包括if语句、for循环等。
3. 类和对象:类是对象的抽象,它定义了对象的属性和方法。
对象是类的实例,它是类的具体实现。
通过创建类的对象,可以方便地管理和操作数据。
4. 继承和多态:继承是面向对象编程中的一个重要概念,它可以让一个类继承另一个类的属性和方法。
多态是指一个接口可以有多种实现方式,可以让程序更加灵活和可扩展。
5. 异常处理:异常是程序中出现的错误或异常情况,它会导致程序中断或崩溃。
Java提供了异常处理机制,可以捕获和处理异常,保证程序的稳定性和可靠性。
6. 输入输出流:Java提供了输入输出流来读写数据,包括文件流、网络流等。
通过输入输出流,可以方便地读取和写入数据,实现数据交换和共享。
7. 多线程编程:Java支持多线程编程,可以实现并发控制和多线程并发访问。
通过线程池等技术,可以有效地管理线程资源,提高程序的性能和响应速度。
8. 网络编程:Java提供了丰富的网络编程API,可以实现基于TCP/IP协议的网络通信。
通过Socket编程,可以实现客户端和服务器的通信,实现分布式系统的构建。
9. GUI编程:Java提供了丰富的GUI编程API,可以实现图形用户界面。
通过Swing组件库,可以方便地构建各种界面元素,实现用户交互和界面美化。
Java达内学习笔记3
内存分类:栈内存、堆内存、寄存器、方法构造(代码段)、池内存栈内存:地址、基本内存的值(栈内存很小,不放对象)堆内存:对象、地址、基本内存的值、寄存器:运算的中间值代码段:如构造方法等的代码池内存:长放在内存里面的东西放在池内存里面(常驻内存)Staff staff = new Staff () ;执行次序:①Staff staff现在栈里面图1-1public class Test {public static void main(String[] args) {Staff staff = new Staff();staff.id="007";="詹姆斯.邦德";staff.salary=10000.0F;staff.faSalary();}}public class Staff {String id;String name;float salary;public void faSalary(){System.out.println(salary);}}编译:javac -d . Hello.java运行:Java com.tenara.Helloimport语句可以导入不同包的class文虚拟机先找栈,通过栈找到堆!垃圾回收机制回收的主要是堆内存里面的东西。
GC是怎么判断堆内存里面的东西已经成为垃圾可以被回收了?GC是从栈找到堆,如果堆里面的内容在栈里面没有对应的地址变元,则被视为垃圾清理掉!import java.util.Scanner; //扫描键盘public class Test2 {public static void main(String [] args){Scanner sc = new Scanner(System.in);//扫描字符串String str=sc.next();System.out.println("输入了"+str);//扫描整数int aa=sc.nextInt();System.out.println("输入了"+aa);//扫描doubledouble dd=sc.nextDouble();System.out.println("输入了"+dd);}}Operators1、"( )"优先级高2、"="优先级低Assignment operators= += -= %= *= /= <<= >>= >>>=&= ^= |=public class Test6 {public static void main(String [] arsg){byte b1=2;byte b2=3;b1=(byte)(b1+b2); // 语句1 加法,转intb1+=b2; //语句2 赋值,不转int}}b1+=b2;是否和语句b1=b1+b2完全等价?答案是否定的,上面程序中的语句1和语句2给出了证明。
java核心技术第十二版笔记
java核心技术第十二版笔记以下是一份《Java核心技术第十二版》的笔记,涵盖了书中主要知识点和概念。
由于篇幅限制,这里只提供了一部分内容,更多细节和内容建议阅读原书。
一、Java平台Java平台由Java虚拟机(JVM)和Java开发工具包(JDK)组成。
JVM 是Java平台的核心,负责解释和执行Java字节码。
JDK是开发Java应用程序的工具集合,包括编译器、调试器、类库和API。
二、Java语言基础1. Java是一种面向对象的编程语言,具有简单性、可移植性、安全性等特点。
2. Java程序由类和对象组成,类是对象的模板,对象是类的实例。
3. Java语言支持继承和多态等面向对象特性。
4. Java语言中的变量需要先声明后使用,变量类型包括基本类型和引用类型。
5. Java语言中的运算符包括算术运算符、关系运算符、逻辑运算符等。
6. Java语言中的控制流语句包括条件语句、循环语句等。
7. Java语言中的异常处理机制用于处理程序中的错误情况。
三、Java输入/输出流1. Java输入/输出流是用于处理数据输入和输出的类库,包括字节流和字符流。
2. Java输入/输出流可以通过InputStream和OutputStream等类进行操作。
3. Java字符流可以通过Reader和Writer等类进行操作,支持多种字符编码格式。
4. Java NIO(New I/O)是Java输入/输出流的改进版本,提供了更高效的数据传输方式。
四、Java图形用户界面1. Java图形用户界面(GUI)是通过Swing和AWT等类库实现的。
2. Swing是Java的一个GUI工具包,提供了丰富的组件,如按钮、文本框、菜单等。
3. AWT是Java最早的GUI工具包,提供了一些基本的GUI组件。
4. Java GUI应用程序通常采用事件驱动模式,通过事件监听器处理用户交互操作。
五、Java网络编程1. Java网络编程可以通过Java Socket API实现基于TCP/IP协议的网络通信。
java guide 自己的笔记
java guide 自己的笔记这只是一个基本的大纲,涵盖了Java编程的一些核心概念。
**Java编程指南笔记****1. 基础语法*** **变量与数据类型**: 基本的数据类型(如int, double, char等)和变量的声明与初始化。
* **运算符**: 基本的算术运算符(如+,-,*,/),比较运算符和逻辑运算符。
* **控制结构**: if-else语句,switch语句,循环(for,while)。
* **函数/方法**: 函数的定义,参数传递(按值传递和按引用传递),返回值。
**2. 面向对象编程*** **类与对象**: 类的定义,对象的创建。
* **封装**: 属性和方法的封装。
* **继承**: 类的继承,继承的方法和属性。
* **多态**: 方法的重载和方法的重写。
* **抽象类与接口**: 抽象类的定义,接口的定义和实现。
**3. 异常处理*** **异常的分类**: Checked异常和Unchecked异常。
* **try-catch块**: 异常的捕获和处理。
* **finally块**: 无论是否发生异常都会执行的代码块。
* **throw与throws关键字**: 抛出异常和声明可能抛出的异常。
**4. 集合框架*** **数组**: 数组的定义与使用。
* **List, Set, Map**: 常用集合接口及其实现类(如ArrayList, HashSet, HashMap)。
* **泛型**: 集合中的元素可以有相同的类型。
* **迭代器**: 遍历集合的方法。
**5. 多线程编程*** **线程的生命周期**: 新建线程,启动线程,等待线程,唤醒线程,终止线程。
* **线程同步**: 防止多个线程同时访问某一共享资源造成的数据不一致。
* **线程间通信**: 使用wait()和notify()方法实现线程间通信。
**6. 网络编程*** **Socket编程**: 建立Socket连接,发送和接收数据。
java 21 使用笔记
java 21 使用笔记Java 21 是一个较新的 Java 版本,带来了许多新特性和改进。
以下是一些使用 Java 21 的笔记:1. 新的 JDK 版本Java 21 是 Oracle JDK 的一个版本,它提供了最新的 Java 标准和库。
与之前的版本相比,Java 21 引入了许多新功能和改进,包括对 ZGC 和 Shenandoah 垃圾收集器的改进、对 JIT 编译器的改进以及对 JavaFX 的更新。
2. ZGC 和 Shenandoah 垃圾收集器Java 21 引入了对 ZGC 和 Shenandoah 垃圾收集器的改进。
ZGC 和 Shenandoah 是两种可选的垃圾收集器,它们可以提供更好的性能和更低的延迟。
在 Java 21 中,ZGC 和 Shenandoah 的性能得到了进一步改进,可以更好地处理大型应用程序和工作负载。
3. JIT 编译器改进Java 21 对JIT(即时)编译器进行了改进,以提高应用程序的性能。
JIT 编译器是将字节码转换为本地代码的组件,它在运行时将 Java 代码编译成本地代码,以提高性能。
在 Java 21 中,JIT 编译器进行了优化,可以更好地处理热点代码和循环,从而提高应用程序的性能。
4. JavaFX 更新JavaFX 是用于构建桌面应用程序的库,它包含了许多用于创建图形用户界面、处理多媒体和网络通信等的类和接口。
在 Java 21 中,JavaFX 得到了更新,包括对 UI、布局和动画的改进以及对一些新功能的支持。
使用 JavaFX,可以轻松地创建具有吸引力和功能强大的桌面应用程序。
5. 其他新特性Java 21 还包含了许多其他新特性和改进,例如对 Unicode 14 的支持、对 HTTP/2 的改进以及对 Java API for WebSocket 的更新。
使用这些新特性和改进,可以更好地构建和扩展应用程序,并提高应用程序的性能和安全性。
java从入门到精通读书笔记(一)
java从入门到精通读书笔记(一)Java从入门到精通笔记入门篇•熟悉Java发展历史•安装JDK、Eclipse•编写Hello World程序•了解Java基本语法•掌握变量、数据类型、运算符、控制语句面向对象编程•了解面向对象的特点•掌握类和对象的概念•学习继承、封装、多态等基本概念•实现类的定义和对象的创建•学习重载和重写集合和IO•学习Java中的容器类•掌握ArrayList、HashSet、HashMap等集合的使用•熟悉Java中的IO操作•了解文件操作、序列化等内容网络编程•掌握socket通信•理解TCP/IP协议•学习HTTP协议•实现客户端和服务器高级Java特性•学习反射、注解等高级特性•掌握多线程编程•熟悉JVM架构•学习异常处理JavaWeb编程•掌握Servlet、JSP等技术•学习MVC框架•熟悉Web应用服务器•学习数据库编程总结•学习Java需要不断积累•遇到问题可以通过搜索引擎解决•不断实践,多写代码•持续学习新技术,保持竞争力入门篇Java语言是面向对象的编程语言,是一种广泛使用的计算机编程语言。
Java语言从1996年开始被发布,现在已被广泛应用于客户端和服务器端程序的开发。
在学习Java之前,需要先了解Java的发展历史。
安装JDK、EclipseJava的开发需要安装JDK和Eclipse。
JDK是Java开发工具包,其中包含了Java编译器等工具。
Eclipse是一款常用的Java IDE(集成开发环境),可以用于编写,调试和运行Java代码。
编写Hello World程序在学习Java语言之前,需要先学会编写Hello World程序,这是一个非常简单的程序,可以帮助初学者快速上手Java编程。
public class HelloWorld {public static void main(String[] args){System.out.println("Hello World!");}}了解Java基本语法Java是一种强类型的语言,需要对数据类型进行明确的定义。
- 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]之间的数。