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基础知识点
1、面向对象:Java语言是一种面向对象的编程语言,它使用Java类和Java对象来构建复杂的系统。
Java类包含方法(程序执行的语句)和属性(关于对象的信息)。
可以使用对象间的关系(如继承和实现)来“重用”代码。
2、语言基础:Java语言是一种类型安全的、健壮的和高效的编程语言,它具有静态类型系统、异常处理、泛型和沙箱安全机制等功能。
这种类型安全指的是Java可以通过显式声明变量的数据类型来确保变量的内容。
3、继承:Java支持继承机制,可以将多个类“组装”在一起,互相共享代码并复用属性和方法。
继承是一种多态性,它允许每个类“定义”它自己独有的行为,但与同一父类共享相同接口。
4、包:Java使用java包来组织类和接口,它提供了独立的命名空间,可以将相似的类和接口组装在一起,以保持代码整洁和可维护性。
5、容器:容器是Java中的一种特殊数据类型,它可以储存和管理多个对象。
Java提供了多种容器,比如ArrayList,Map,HashMap 等,帮助程序员管理复杂的系统。
第三章JAVA语言基础笔记
Java语言基础本章的主要目标:1、了解java的主类的结构;2、了解java语言中的基本数据类型;3、了解java语言中的常量和变量;4、了解java语言运算符的使用;5、了解java语言数据类型的转换;6、了解java语言中代码注释与编码规范;Java主类结构Java语言是面向对象的程序设计语言,java的基本组成单元就是类,类体又包括属性和方法,而每一个程序都必须包含一个main()方法,含有main()方法的类称之为主类;我们用一个程序来看一下主类的结构:public class First{static String s1=”java”;public static void main(String args[]){String s2=”学习之旅!”;System.out.println(“s1”);System.out.println(“s2”);}}这就是一个简单的java程序,包含了类的结构;需要注意的是,java代码中所有的标点符号,括号都是需要在英文状态下输入;否则在编译的时候将会报错;通常将类的属性称之为类的全局变量(又叫成员变量),将方法中的属性称之为局部变量;全局变量声明在类体中,局部变量声明在方法体中;Java程序中的main()方法必须声明为public staticvoid 。
main()方法是程序开始执行的位置;Java语言严格区分大小写;基本数据类型Java中的基本数据类型有字符和数字之间可以相互转换;在程序执行过程中,其值不能改变的量称为常量,其值能改变的量称之为变量;Java语言规定标识符由任意顺序的字母、下划线、美元符号、和数字组成,并且第一个字符不能使数字字符;Java中允许使用汉字或其他语言作为变量名,但不建议使用;常量名通常使用大写字母,但这并不是必须的,很多java程序员使用大写字母表示常量,常常是为了清楚的表明正在使用常量;由于变量被定义出来后只是暂存在内存中,等到程序执行到某一个点后,该变量会被释放掉,也就是说变量有他的生命周期;在一个方法中,局部变量和成员变量同名时,此时成员变量将被隐藏,即这个成员变量在这个方法中暂时失效;如果从低精度类型向高精度类型转换,则永远不会溢出,并且总是成功的;把高精度类型转换为低精度类型则必然会有信息的丢失;从低精度类型向高精度类型转换,系统自动执行,程序员无需进行任何操作,这种类型的转换又叫隐式转换,从高进度类型向低精度类型转换,则需要强制执行,又叫强制类型转换,又称显示转换;当一个数超过了要转换的类型的最大值,则转会后的数值则会变为最小值,这也可以理解为数据的溢出;代码注释分为单行、多行、和文档注释;编码规范,简言之就是利人利己;。
马士兵java基础笔记 pdf版 面向对象部分
public class Test{ public static void main(String args[]){ Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000)(1); test.change1(date)(4); test.change2(d1);(7) test.change3(d2);
b.setDay(22),把 b 指向的值改变了,这次真 的变了!
方法执行完后,b 消失,d2 的值变了。
四. 方法重载 类中可以定义相同名字但参数不同的方法。
五. this 关键字 this 指向对象自身的引用。
在类的方法定义中使用 this 关键字代表使用该方法的对象的引用。 当必须指出当前使用方法的对象是谁时要使用 this 有时使用 this 可以处理方法中成员变量和参数重名的情况 this 可以看作是一个变量,它的值是当前对象的引用
_id:1
age = _age; }
_age:25
public static void main(String[] args) {
Person tom = new Person(1, 25); } }
tom:XXX Stack
id:1 age:25
Heap
例子:
class BirthDate { private int day; private int month; private int year; public BirthDate(int d, int m, int y) { //构造方法 day = d; month = m; year = y; }
狂神说Java--Java学习笔记(基础合集)
狂神说Java--Java学习笔记(基础合集)笔记参考来源狂神说Java视频https:///video/BV12J41137hu 本篇笔记有点长,可以根据⽬录定位,建议配合视频学习。
预科什么是计算机1. 名称:Computer,全称电⼦计算机,俗称电脑。
2. 定义:能够按照程序运⾏,⾃动、⾼速处理海量数据的现代化智能电⼦设备。
3. 组成:由硬件和软件组成。
4. 形式:常见显⽰有台式计算机、笔记本计算机、⼤型计算机等。
5. 应⽤:科学计算、数据处理、⾃动控制、计算机辅助设计、⼈⼯智能、⽹络等领域。
硬件及冯诺依曼结构计算机硬件组成:CPU,主板,内存,电源,主机箱,硬盘,显卡,键盘、⿏标,显⽰器。
冯诺依曼结构软件及软件开发计算机软件Windows常⽤快捷键Alt+f4关闭窗⼝ Shift+Delete永久删除 ctrl+w⾃动保存死机:任务管理器结束进程基本的Dos命令打开CMD的⽅式1. 开始+系统+命令提⽰符2. win键+R+输⼊cmd (推荐使⽤)3. 在任意的⽂件夹下,按住Shift键+⿏标右击,打开命令⾏窗⼝4. 在资源管理器地址栏路径前⾯加 “cmd ”5. 管理员运⾏⽅式:命令提⽰符右键以管理员⾝份运⾏(最⾼权限运⾏)常⽤的Dos命令# 盘符切换 E:# 查看当前⽬录下所有⽂件 dir# 切换⽬录 cd /d E:\idea# 返回上⼀级⽬录 cd ..# 进⼊同级⽬录下的下⼀级⽬录 cd tmp(该⽬录下的⽂件名)# 清屏 cls (clear screen)# 退出终端 exit# 查看电脑当前IP地址 ipconfig# 打开计算器 calc# 打开画图 mspaint# 新建记事本 notepad# 在当前⽬录新建⽂件夹 md test(⽂件夹名)# 新建⽂件 cd> a.txt(⽂件名)# 删除⽂件 del a.txt(⽂件名)# 删除⽬录 rd test(⽬录名)# ping命令(复制链接进⼊Dos直接单击⿏标右键粘贴)ping 计算机语⾔发展史第⼀代语⾔:机器语⾔第⼆代语⾔:汇编语⾔第三代语⾔:⾼级语⾔⾼级语⾔C、C++、Java、C#、Python、PHP、JavaScript …⼤体上分为:⾯向过程与⾯向对象两⼤类C语⾔是典型的⾯向过程的语⾔,C++,Java是典型的⾯向对象的语⾔Java⼊门Java帝国的诞⽣Java特性与优势简单性⾯对对象可移植性⾼性能分布式多态性多线程安全性健壮性Java三⼤版本Write Once,Run AnywhereJavaSE: 标准版 (桌⾯程序,控制台开发…)JavaME: 嵌⼊式开发 (⼿机,⼩家电…),已经凉了JavaEE: E企业级开发 (Web端,服务端开发…),JavaSE为基础JDK JRE JVMJDK:Java Development Kit (Java开发者⼯具,包括 JRE,JVM)JRE:Java Runtime Environment (Java运⾏时环境)JVM:Java Virtual Machine (Java虚拟机,跨平台核⼼)安装开发环境卸载JDk1. 删除Java安装⽬录2. 删除环境变量JAVA_HOME3. 删除path下关于JAVA的⽬录4. Java -version安装JDK1. 百度搜索JDK8,找到下载地址2. 同意协议,下载电脑对应的版本,如64位操作系统下载 jdk-8u281-windows-x64.exe3. 双击安装JDK4. 记住安装路径5. 配置环境变量1. 我的电脑-》属性-》系统⾼级设置-》环境变量2. 系统变量新建–> JAVA_HOME 输⼊对应的jdk安装路径3. path变量–>% JAVA_HOME%\bin6. 测试是否成功 cmd–>Java -versionJava基础注释1. 单⾏注释 //2. 多⾏注释 /* */3. ⽂档注释 /** */标识符和关键字Java 所有的组成部分都需要名字。
廖雪峰Java教程学习笔记(一)——Java程序基础
廖雪峰Java教程学习笔记(⼀)——Java程序基础(⼀)Java程序基本结构Java是⾯向对象的语⾔,⼀个程序的基本单位就是class。
在class内部,可定义若⼲⽅法。
类名要求:类名必须以英⽂字母开头,后接字母,数字和下划线的组合习惯以⼤写字母开头⽅法名要求:⽅法名必须以英⽂字母开头,后接字母,数字和下划线的组合习惯以⼩写字母开头(⼆)变量和数据类型在Java中,变量分为基本类型的变量和引⽤类型的变量。
例如:int x = 1; //定义了⼀个整型int类型的变量,名为x,初始值为1变量的⼀个特点是可以重新赋值,也可以赋值给其他变量。
值得注意的是,在第⼀次定义变量时需要指定变量类型,⽽第⼆次重新赋值时,该变量已经存在了,不⽤再指定变量类型。
基本数据类型整数类型:byte, short, int, long浮点数类型:float, double字符类型:char布尔类型:boolean计算机内存的最⼩存储单元是字节(byte),⼀个字节就是⼀个8位⼆进制数,即8个bit,字节的⼆进制表⽰范围为00000000~11111111,换算成⼆进制是0~255,换算成⼗六进制是00~ff。
Java基本数据类型占⽤的字节数类型byte short int long float double char字节 1 2 4 8 4 8 2定义基本数据类型时的注意事项整型最⾼位的bit表⽰符号位(0表⽰正数,1表⽰负数)long型的结尾需要加L(int l = 9000000000000000000L;)float型的结尾需要加f(float f = 3.14f;)char类型使⽤单引号‘ ’,且仅有⼀个字符,字符串使⽤双引号“ ”引⽤类型常量:定义变量的时候,如果加上final修饰符,这个变量就变成了常量。
常量名通常全部⼤写var关键字:省略变量类型可使⽤var关键字(三)整数运算Java的整数运算遵循四则运算规则,可以使⽤任意嵌套的⼩括号。
第一章-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韩顺平笔记第1讲内容介绍.项目演示.原理剖析1. 课程包括:java面向对象编程,java图形界面,java数据库编程,java文件i/o流,java网络编程,java的多线程2. Java历史:1990 sun 启动绿色计划 1992 创建 oak语言—> java1994 gosling 参加硅谷大会演示java功能震惊世界 1995 sun 正式发布java第一个版本,目前最新的是jdk7.03. java开发工具:记事本,jcreator,jbuilder,netbean,eclipse4. jdk包括:jre(java运行环境)java的工具:编译器javac.exe解释执行器java.exe java的类库:3600多个,常用的150多个5. 第一个程序://功能:显示―HelloWorld‖//public:表示类是公共的,一个文件中只有一个public类 //class:表示这个是一个类//HelloWorld:类名(公共类的类名,必须和文件名一样)public class HelloWorld {//一个主函数,程序的入口 public static void main (String args[]) {//执行语句System.out.println("helloWorld!"); } }6. Java源程序(.java文件)——>java字节码文件(.class文件)——>由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm)——>字节码文件(.class)就会在java虚拟机中执行l,average); } }第2讲变量.数据类型1. 在java里面int占4个字节,long占8个字节2. Java基本数据类型:整数:(byte一个字节:-128---127 int四个字节:-2147483648---+2147483647short两个字节:-32768---+32767 long八个字节:)小数(浮点):float double布尔:boolean字符:char(两个字节,可以存放汉字, char test1 ='中';)引申到字符串(类)3.在java中对char进行运算的时候,直接是当做ASCII码对应的整数4.数据不能从高精度到低精度的转换Byte<short<int<long<float<doublefloat a=3.4;是过不去的,在java中小数默认是double(双精度)的应该写成是float a=3.4f;不过可以强制转换:int a=(int)1.2; intb=(int)1.95. int a=1;int b=a+1.2; a先是往高精度转换,然后赋给b,就报错改成int a=1;double b=a+1.2; 或者int a=1;float b=a+1.2f; 就解决了第4讲流程控制1. switch case语句中,switch条件表达式的数据类型应该和后面case的类型一致2. switch case语句中,可用的数据类型主要是:byte short int char enum第5讲类与对象1. 面向对象编程-类与对象类名首字母大写类里面的元素叫类的成员变量/属性2. 类的定义package 包名;class 类名extends 父类implements接口名{成员变量;构造方法;成员方法;}3. 如何创建对象:先声明再创建Cat cat1;cat1=new Cat();一步到位Cat cat1 =new Cat();4. 引用传递类似于指针一样第8讲this 类变量1. this属于类的对象的而不是属于类的2. 5this不能在类的外部使用,只能在类定义时候使用!3. 可以用类名直接访问静态变量第9讲类方法封装1.类变量是该类的所有对象共享的对象,一改全改了2.定义语法:访问修饰符static 数据类型变量名3. public class Demo9{static int i=1;static{System.out.println("zhixingyicile");i++;}//会自动执行一次,也只有一次public Demo9(){System.out.println("ffffffff");i++;}public static void main(String args[]){Demo9 t1=new Demo9();System.out.println(Demo9.i);Demo9 t2=new Demo9();System.out.println(i);}}4.类方法(静态方法、静态函数):属于所有对象实例的5.Java中:类变量(static)原则上用类方法(static)去访问;类方法中不能访问非静态变量,就是非类变量,但是普通的成员方法可以访问静态变量(类变量)使用:类名.类方法名对象名.类方法名6.非类变量就是实例变量,属于每个对象自己的7.Java面向对象编程的三(四)大特征:封装、继承、多态(、抽象)8.抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就是抽象9.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。
Java基础知识总结(超详细整理)
Java基础知识总结(超详细整理)Java语⾔的特点1.⾯向对象⾯向对象(OOP)就是Java语⾔的基础,也是Java语⾔的重要特性。
⾯向对象的概念:⽣活中的⼀切事物都可以被称之为对象,⽣活中随处可见的事物就是⼀个对象,我们可以将这些事物的状态特征(属性)以及⾏为特征(⽅法)提取并出来,并以固定的形式表⽰。
2.简单好⽤Java语⾔是由C和C++演变⽽来的,它省略了C语⾔中所有的难以理解、容易混淆的特性(⽐如指针),变得更加严谨、简洁、易使⽤。
3.健壮性Java的安全检查机制,将许多程序中的错误扼杀在摇蓝之中。
另外,在Java语⾔中还具备了许多保证程序稳定、健壮的特性(强类型机制、异常处理、垃圾的⾃动收集等),有效地减少了错误,使得Java应⽤程序更加健壮。
4.安全性Java通常被⽤在⽹络环境中,为此,Java提供了⼀个安全机制以防恶意代码的攻击,从⽽可以提⾼系统的安全性。
5.平台⽆关性Java平台⽆关性由Java 虚拟机实现,Java软件可以不受计算机硬件和操作系统的约束⽽在任意计算机环境下正常运⾏。
6.⽀持多线程在C++ 语⾔没有内置的多线程机制,因此必须调⽤操作系统的多线程功能来进⾏多线程程序设计,⽽ Java 语⾔却提供了多线程⽀持。
多线程机制使应⽤程序在同⼀时间并⾏执⾏多项任务,该机制使得程序能够具有更好的交互性、实时性。
7.分布式(⽀持⽹络编程)Java语⾔具有强⼤的、易于使⽤的⽹络能⼒,⾮常适合开发分布式计算的程序。
java中提供了⽹络应⽤编程接⼝(),使得我们可以通过URL、Socket等远程访问对象。
8.编译与解释共存Java语法基础标识符: ⽤来标识类名、对象名、变量名、⽅法名、类型名、数组名、⽂件名的有效字符序列。
合法的标识符:由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,并且⾸字符不能是数字。
不能把java关键字和保留字作为标识符。
标识符对⼤⼩写敏感。
关键字:Java语⾔中已经赋予了特定含义的保留字: const、goto,Java版本中尚未使⽤,但以后版本可能会作为关键字使⽤变量:程序运⾏期间可以被改变的量。
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四、变量的使用:页脚内容1变量取名,命名规则类型数值: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:exejre页脚内容2libsrc.zip(二)数据类型一、数据类型转换自动类型转换:int num=100;double b=num;强制类型转换double num=100.9;int b=(int)num;二、运算符赋值运算符=算数运算符+ - * / % ++ --+= -= *= /= %=关系运算符> < >= <= == !=逻辑运算符&& || !页脚内容3条件运算符?:了解优先级即可三、流程控制1、if:基本ifif-else多重if嵌套if注意:条件是boolean值常见错误:if(num=5){}else{}大括号不省略多重if顺序问题注意:页脚内容4流程图的使用和问题的分析解决过程2、switch等值比较注意:(1)语法上的常见错误(2)和多重if的异同循环结构:解决重复性的操作简介高效(三)循环结构一:循环:(1)while循环while(条件){操作循环变量迭代}注意:页脚内容5代码缩进循环能否正常退出(2)do-while循环do{循环}while(条件);注意:代码缩进循环能否正常退出和while的区别:语法上、执行上(至少执行一次)(3)for循环for(变量初始化;条件;变量迭代){循环操作}页脚内容6注意:代码缩进循环能否正常退出执行顺序循环变量可以有多个二、双重循环双重循环的特点:外层循环进入一次,内层循环就要完整的执行一遍特点:外执行一次内执行一轮双重循环次数:外层循环次数*内层循环的次数实现的重点:页脚内容7(1)确定谁做外层循环,确定谁做内层循环(2)两层循环变量有没有规律性的关系1、打印图形:找规律矩形行i外层星星j内层1 52 53 54 55 5平行四边形行i外层内层:空格星星1 4=5-i 52 3=5-i 53 2=5-i 5页脚内容84 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、分析需求:重复做一件事情前提条件(循环进入的条件)做什么事情(循环操作)页脚内容92、用代码解释选择一种合适的循环结构whiledo-whilefor根据所选择的结构套用语法while(条件){}do{}while(条件);for(循环变量初始化;条件;迭代){}3、容易出错的点(1)变量在何处声明例1:计算5门课平均成绩页脚内容10例2:for(int i=0;i<=6;i++){System.out.println(i);}int j=i;System.out.println(j);(2)没有适当的(合适的)跳出循环根本跳不出来根本进不去循环多或少循环了一次四、循环的跳转break:跳出整个循环continue:跳出本次循环,进入下次循环return:结束方法(了解即可)五、程序调试页脚内容11设置断点Debug->单步运行F5 F6观察变量(三)数组一、数组1、数组的基本使用(1)数组的作用一组相同数据类型的数数组也是变量,内存中一串连续的空间(2)数组的几个基本概念标识符(数组名字)元素下标:从0开始数据类型数组的长度(数组名字.length)(3)数组使用步骤声明数组页脚内容12int[] 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){sum+=score;页脚内容13}二、回顾数组变量,内存中一串连续的空间相同数据类型的一组数据数组的基本概念元素数据类型(数组类型)下标(0,数组.length-1)数组的长度:数组.length数组的基本使用声明数组(类型[] 数组名称或类型数组名称[])分配空间(数组名称= new 数据类型[5];)赋值(num[0]= ;)处理数据变量:基本数据类型页脚内容14int、double、float、char、boolean引用数据类型String、数组内存分布不同使用上不同.三、数组的典型使用1、求最大值、最小值(打擂台)2、插入算法(找位置)3、冒泡排序数组存储5个数字下标:0 1 2 3 4外层循环内层循环i:0第一轮+ j比较次数:4 =4:length-1页脚内容15i: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类的使用常用方法:页脚内容16sort().....记得查API帮助文档(帮助文档已经在网盘中提供了,如果大家在Oracle官网中没有下载,可以找中心的技术顾问老师提供网盘用户名和密码,登录后拿到帮助文档)数据类型基本数据类型int double char boolean 。
狂神说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基础知识总结写代码: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必备基础知识点(超全)
Java必备基础知识点(超全)Java基础1、简述Java的基本历史java起源于SUN公司的⼀个GREEN的项⽬,其原先⽬的是:为家⽤消费电⼦产品发送⼀个信息的分布式代码系统,通过发送信息控制电视机、冰箱等2、简单写出Java特点,写出5个以上,越多越好简单的、⾯向对象的、分布式的、安全的、稳定的、与平台⽆关的、可解释的、多线的、动态的语⾔。
3、什么是Java?JAVA:⼀种编程语⾔⼀种开发环境⼀种应⽤环境⼀种部署环境4、请写出Java的版本分类,以及每种版本的应⽤⽅向三种版本:JME:是⾯向内存有限的移动终端. 为消费性产品设计的;JSE:是SUN公司针对桌⾯开发和低端商务计算⽅案开发的版本。
为笔记本电脑、PC机设计的;JEE:是⼀种利⽤JAVA 2平台来简化企业解决⽅案的开发、部署和管理相关的复杂问题的体系结构。
为企业级的、服务器端的⾼端应⽤⽽设计的;5、描述Java技术的主要特性java虚拟机垃圾回收代码安全性如果你想学习Java可以来这个群,⾸先是⼆⼆零,中间是⼀四⼆,最后是九零六,⾥⾯有⼤量的学习资料可以下载。
6、描述 Java虚拟机的功能(1)通过 ClassLoader 寻找和装载 class ⽂件(2)解释字节码成为指令并执⾏,提供 class ⽂件的运⾏环境(3)进⾏运⾏期间垃圾回收(4)提供与硬件交互的平台7、简述Java代码安全性(1)编译时的错误检验(2)类装载检查,把本机上的类和⽹络资源类相分离,在调⼊类的时候进⾏检查,因⽽可以限制任何“特洛伊⽊马”的应⽤(3)字节码校验(4)沙箱机制,限定访问权限8、描述Java垃圾回收机制Java 编程语⾔解除了程序员释放内存的责任。
它可提供⼀种系统级线程以跟踪每⼀次内存的分配情况。
在 Java 虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的内存。
垃圾收集在 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 se(j2se)桌面开发2.Java ee(j2ee)web开发3.Java me(j2me)手机开发二、Java se课程介绍1.Java面向对象编程2.Java图形界面3.Java数据库变成4.Java文件io流5.Java网络编程6.Java多线程三、Java语言的特点:1.Java语言是简单的2.Java语言是面向对象的3.Java语言是跨平台(操作系统)的,一次编译,到处运行。
4.Java语言是高性能的Jdk的配置:Jdk的全程是java development kit中卫java开发工具包Jdk是sun公司开发的Jdk包括jre(java runtime envirnment)java运行环境,一堆java工具和java基础类库。
Jdk的配置:添加环境变量即可。
变量值安装目录的bin文件夹目录如何运行你的java程序1、将hello.java编译成hello.class使用命令:javac hello.java2、运行hello.class使用命令:java hello//作者:hoochon//功能:在控制台显示hello world!//日期:2013.4.9//public:表示这个类是公共类,一个java文件中只能有一个public类//class:表示这是一个类//hello:类名(公共类的类名必须和文件名一致)public class hello{//一个主函数,相当于程序的入口public static void main(String[] args){System.out.println("Hello World!");}}Hello,world程序改进,让它成为一个简单的加法运算程序。
//作者:hoochon//功能:在控制台显示hello world!//日期:2013.4.9//public:表示这个类是公共类,一个java文件中只能有一个public类//class:表示这是一个类//hello:类名(公共类的类名必须和文件名一致)public class hello{//一个主函数,相当于程序的入口public static void main(String args[]){//执行语句//System.out.println("Hello World!");int a=10;int b=20;int result=a+b;System.out.println("结果是"+result);}}Java基本数据类型1.整数型:可以表示一个整数,常用的整数类型有:byte ,short,int,long;主要的区别是数据大小的范围:Byte 一个字节-128至127Short 二个字节-32768至32767Int 四个字节-2147483648至2147483647Long 八个字节范围公式:-2字节*8-1至2字节*8-1-12.浮点型:可以表示一个小数,常用的浮点型有float,double区别也是数据大小范围:3.布尔型:可以表示真或假4.字符型:可以表示单个字符。
翁恺java的笔记
翁恺java的笔记翁恺是一位知名的计算机科学教授,他在教授Java编程方面有着丰富的经验。
虽然我无法直接提供他的具体笔记,但我可以从多个角度给你一些关于Java编程的全面回答。
Java是一种面向对象的编程语言,广泛应用于各个领域,包括软件开发、移动应用开发、网络编程等。
下面是一些关于Java的重要概念和知识点,希望能对你有所帮助:1. Java基础知识,了解Java的基本语法、数据类型、运算符、控制结构等。
掌握面向对象编程的概念,如类、对象、继承、多态等。
2. Java核心库,熟悉Java标准库,包括集合框架、IO操作、异常处理、多线程等。
掌握常用类和接口的使用方法,如ArrayList、HashMap、File等。
3. Java开发工具,掌握使用Java开发工具,如Eclipse、IntelliJ IDEA等。
了解如何创建、编译和运行Java程序,以及调试代码的方法。
4. Java面向对象设计,学习如何设计良好的Java类和对象,掌握封装、继承和多态的原则。
了解设计模式,如单例模式、工厂模式、观察者模式等。
5. Java异常处理,了解如何使用try-catch语句来捕获和处理异常。
掌握异常的分类和处理机制,编写健壮的代码。
6. Java多线程编程,了解多线程的概念和基本原理,学习如何创建和管理线程。
掌握线程同步和互斥的方法,避免多线程并发导致的问题。
7. Java网络编程,学习如何使用Java进行网络编程,包括Socket编程、HTTP通信、TCP/IP协议等。
了解网络通信的基本原理和常用技术。
8. Java图形界面编程,掌握Swing或JavaFX等图形界面库的使用,了解如何创建窗口、按钮、菜单等组件,并处理用户交互。
9. Java数据库编程,学习如何使用Java连接和操作数据库,掌握SQL语言和JDBC接口的使用。
了解ORM框架,如Hibernate、MyBatis等。
10. Java性能优化,了解如何对Java程序进行性能优化,包括内存管理、算法优化、多线程优化等方面。
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常用知识点(必备)
JAVA常⽤知识点(必备)1、JAVA的跨平台原理java通过不同系统,位数,版本的虚拟机来屏蔽不同的指令集差异,对外提供统⼀的接⼝(java api)2、JAVA特性封装:属性私有化,对外提供⽅法(set/get)继承:在⼀个现有类基础上,修改或新增新的内容多态:引⽤变量指向的具体类型和⽅法在运⾏时才确定3、String、StringBuffer、StringBuiler区别String是内容不可变的字符串,StringBuffer、StringBuiler是内容可变的字符串StringBuffer是线程安全的、StringBuiler是⾮线程安全的4、集合(1)集合分两种,值集合和键值集合值集合主要是List和Set,都继承了Collection接⼝键值集合主要是Map(2)List:有序,可重复分为ArrayLIst、LinkedList和VectorArrayList底层是数组实现,为连续的内存空间,所以查找速度快,增删速度慢LinkedList底层是链表实现,不连续的内存空间,所以增删速度快,查找速度慢Vector底层是数组,线程安全(3)Set:⽆序,不可重复重写equals和hashcode⽅法,因为在add,会先⽤equals判断值是否相等,再判断是否具有相同的hash值(属性相同的对象被看作同⼀个对象)(4)Map:键值对hashMap:可以存储空值,⾮线程安全。
put存储键值对的时候,会调⽤hashcode⽅法返回⼀个hashcode值,找到bucket位置存储Entry对象,使⽤get(key)获取对象解决hashmap⾮线程安全问题:因为hashmap内部类似链表结构,在多线程环境下有可能成环,解决⽅法ConcurrentHashMap(把⼀个Map分成N个segment,分别加锁,保证线程安全)。
hashtable:线程安全5、拷贝⽂件思路:源⽂件、源地址、⽬标⽂件、⽬标地址缓存输⼊输出流(FileInputStream、FileOutputStream)改进:FileChannels(transferTo),适合拷贝⼤⽂件6、线程池为了避免重复的创建和销毁线程,让创建的线程进⾏复⽤,存放空闲线程的⼀个池⼦Executors.NewFixedThreadPool()创建⼀个固定⼤⼩的线程池7、存储过程的好处(1)预编译,只在创建时进⾏编译,提⾼数据库执⾏速度(2)⽐较复杂的业务需要多条sql,提⾼⽹络传输速度(3)安全性8、ajax参数url:请求地址type:get/postdata:请求数据dataType:服务器返回数据类型(json、text、xml、html)success:成功调⽤函数erroe:失败调⽤函数9、Struts2执⾏流程(1)服务端接收客户端请求,经过⼀系列的过滤器,到达核⼼过滤器(StrutsPrepareAndExecuteFilter)(2)StrutsPrepareAndExecuteFilter通过ActionMapper将请求交给ActionProxy代理(3)ActionProxy通过Configeration Manager找到配置⽂件,找到需要调⽤的Action(4)创建⼀个ActionInvocation实例,调⽤Action⽅法,调⽤前后还会执⾏相关的拦截器(5)通过结果集的name返回对应的结果集,对浏览器进⾏响应10、Struts2拦截器通过动态配置,在action前后加⼊⼀些相关的逻辑包括:登录判断,未登录跳转到登录页⾯⽤户权限判断,没有权限给出判断信息操作⽇志11、SpringMvc⼯作流程(1)⽤户向服务器发起请求,请求交给前端控制器DispatcherServlet处理(2)DispatcherServlet对请求的URL进⾏解析,得到URI,调⽤HandlerMapping获得Handler配置的所有相关对象(3)DispatcherServlet根据获得的Handler,选择⼀个合适的HandlerAdapter,执⾏Handler(4)Handler执⾏完成后,返回⼀个ModelAndView对象(5)DispatcherServlet根据返回的ModelAndView,选择⼀个合适的视图解析器,返回客户端12、Struts1⼯作流程(1)服务段接收到客户端请求,交给ActionServlet处理(2)拦截所有.do请求,将客户请求封装到actionForm⾥⾯,到配置⽂件去匹配对应的action(主要有⼏个属性,name对应封装的actionform,input匹配拦截的路径和⽅法,type匹配action的实现类)(3)action处理完返回actionforward对象,根据配置⽂件找到对应页⾯返回给客户端13、SpringMvc和Struts2区别(1)核⼼控制器不同,SpringMvc是Servlet,Struts2是filter(2)控制器实例不同,SpringMvc是基于⽅法级别,只会有⼀个实例,线程不安全,Struts2基于对象,针对不同的请求,产⽣不同的ActionInvaction实例(3)参数传递:Struts2是通过值栈传递,SpringMvc是通过⽅法的参数传递(4)intercepter拦截器:Struts2有⾃⼰的拦截器,SpringMvc⽤aop实现(5)SpringMvc处理ajax请求直接返回数据@ResponseBody14、Struts1和Struts2的区别(1)因为forward都是返回到具体的jsp页⾯,每⼀个forward对应配置⽂件的⼀个forward标签,每⼀次改动配置⽂件都要重启Tomcat(2)struts1⾥的action是单例模式的,供多个请求共享,所以不是线程安全的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1什么是变量?答:是指代在内存中开辟的储存空间,用于存放运算过程中需要用到的数据。
一个类中不能有2个public以为有pulic要和类名保持一致,有2个的话就不知道是和谁保持一致了,可以用很多类。
2变量的声明答:当需要使用一个变量的时候,必须要对该变量就行声明,变量的声明包含2点,1是变量的基本数据类型,2是变量名比如int a ;int是数据类型a是变量名,可以声明多个变量,比如int a,b,c;等3,变量的初始化答:有2种初始化方法,1是在变量声明时初始化,变量类型变量名=初始值,比如int a=0;2是先声明变量,然后再初始化给变量赋值,,比如int a;a=0;3.1可以对变量中的值进行存取,操作,变量使用之前,要使用与其变量符合的数据类型。
3.2基本数据类型,8种1整数类行:byte,short int(常用),long(常用)2浮点类型:float,double(常用)3,boolean 4 char类型名称字节空间使用场景------------------------------------------------------------------------------------------------------------ byte 丨1字节(8位)丨储存字节数据(较少用)--------------------------------------------------------------------------------------------------------------- short 丨2字节(16位)丨兼容性考虑(很少用)------------------------------------------------------------------------------------------------------------ int 丨4字节(32位)丨存储普通整数(常用)-------------------------------------------------------------------------------------------------------------- long 丨8字节(64位)丨存储长整数(常用)------------------------------------------------------------------------------------------------------------- float 丨4字节(32位)丨存储浮动数(不常用)------------------------------------------------------------------------------------------------------------ double 丨8字节(64位)丨存储双精浮点数(常用)----------------------------------------------------------------------------------------------------------- boolean 丨1字节(8位)丨存储逻辑变量(true,fales)(常用)--------------------------------------------------------------------------------------------------------------- char 丨2字节(16位)丨存储一个字符(常用)---------------------------------------------------------------------------------------------------------------5,基本数据类型转换2种方式转换,1是自动类型转换(隐式类型装换):从小类到大类型可以自动完成;2是强制装换:从大类型到小类型需要强制转换。
5.1基本数据类型是放在栈中,而引用数据类型放在栈中也放在堆中。
因为引用数据类型把new出来的变量名放在栈中,把里面的数据放在堆中去了。
5.1基本数据类型的值传递。
static void ss(int x){(第一次打印)system.out.println(x)x=100;(第二次打印)system.out.println(x)}main方法中定义了int x=20;ss(x);(第三次打印)system.out.println(x)执行mian方法先把int x=20放入了栈里面,然后开始执行ss()方法,把x传递给去x=20,所有第一次打印的是20,然后x=100,第二次打印的是100,执行完了ss()方法之后,方法就在栈里面消失了,然后就留mian里面x=20还在栈中了,所以第三次打印的是20。
5.2引用数据类型地址传递mian方法中如果int[]=nums=new int[]{10,20}再执行ss(nums)方法传递到方法中去这个就叫做地址传递,虽然没有方法在栈中了,但是会改变在堆中的值所以最后打印还是100;6,数学运算符++在前先加再算,++在后先算再加比如int a=1 int b=2;int s=a++;(加加在后)打印是1;int a=1 int b=2;int s=++a;(加加在前)打印是2;一元运算符:++,--;二元运算符有:+,-,*,/,%(取余数);三元运算符:?(如果,if),:(else 否则)。
返回的是布尔类型;7,关系运算符,一般有:>(大于),<(小于),>=(大于或等于),<=(小于或等于),==(等于),!=(不等于)。
位运算符:&(按位与),丨(按位或),~(按位非),^(按位异或),<<(左移),>>(右移)8,调试java程序:当程序结构越来越复杂时,需要专门的技术来发现和定位错误,就是程序调试,传说中的debug,步骤:1,设置断点,在代码行的前面双击就会有一个断点。
break point2,开启调试/单步调试,开启调试(Step into F5),单步调试(step over F6)3观察变量的变化,window里面找show view 里面找debug里面找variables ,在variables 里面观察变量的变化9,数组的使用1,一维数组int[] age={a,b,c},声明了一个整形数组,nums[0]=9,为数组0号元素赋值为9。
初始化一维数组int a[]={1,2,3};创建数组后就不能再修改数组的大小,基本数据类型数组的默认值为0,char型数组元素的默认值为\u0000,布尔类型的数组默认值是flase2动态赋值访问数组元素,3.二维数组:在数组当中存放的每一个元素又是一个数组,比如int1[][] a=new int[][]{age(本身就是一个数组了),{10,11,12}(重新定义的元素),age2};4构造函数的使用:构造函数中不需要定义返回类型,且构造函数的名称与所在的类名完全一致,其余的与函数的特性相同,可以带有参数列表,可以存在函数的重载现象.(假如定义一个User类,User(){}这个就是无参构造函数,,,User(String name){}这个就是有参构造函数,,,public void userfunction(){}这个是普通成员函数)5:java中的构造方法:不用写return,就是与类名相同的方法,用来初始化(public user(){} String name=“zhulin”在调用User user=new User()的时候会把name=“zhulin”自动初始化。
然后输出打印出zhulin)6:自定义构造器:是自己在java代码中定义了一个构造器。
可以写pbulic也可以不写User (){}也可以自定义有参的构造器(User(string username){ name=username(在构造器当中作了初始化)} User user=new User(“zhulin”))当构造器里面带参的话那new 出来的构造器就需要给他赋值;7:构造器重载:方法名称相同,参数不同;10方法(Method):是为了完成一个操作而组合在一起的语句组。
好处是省去代码的重复编写简化代码,提高代码的可读性。
方法的种类:static修饰的方法一般被称作静态方法,方便在没有创建对象的时候调用方法1,内置方法,是由jdk类库提供,需要导入相应的包2,自定义方法,不带参数和带参数的,由方法名称,参数,返回值类型及方法体组成,11重载:在一个方法中定义2个,方法名称相同,参数列表不同。
解决了功能相同,参数不同,就不需要定义多个方法名称(重载只能在类中使用)重写:当子类继承父类的时候,需要写他的方法,方法名相同,参数也相同。
(只能在子类和父类中,好处:解决子类继承父类之后,父类的某方法不能满足子类的的特征,子类就可以重新定义该方法)12,面向对象面向过程:是指所有事情都要按顺序一个一个做(买菜,做菜,吃饭,洗碗);面向对象是基于面向过程而已的,就是说面向过程是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节(去饭店吃饭,只需要找服务员点餐就可以,不需要知道菜是怎么做出来的,把做好的东西给你就行)。
1,面向对象的目的将复杂的事情简单化,2将以前的过程中的执行者变成指挥者,3面向对象是符合现在人们思考习惯的一种思想。
2,面向对象的三大特性:1.封装。
2.继承。
3.多态(假如你是土豪,全家都是土豪)2.1封装:是指将对象的实现细节隐藏起来,然后通过公共的方法向外暴露该对象的功能(比如你今天吃了白菜,别人不知道你中午吃了什么,除非你自己说给别人听)2.2继承:是当子类继续父类后,子类是一种特殊的父类,能直接或间接获得父类里的成员。
(假如你是富二代,那可以肯定你是继承了你父亲的钱)2.3多态:可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,意味着同一类型的对象在运行时可能表现出不同的行为特征。
(比如猫和狗都在叫,可以说成是动物在叫,其实他们的行为特征不是一样的,但是是同一类型的)3什么是对象:(objct)可以定义成包含特征和行为的一个实体,对象也称为实例(instance)。
(比如说对象是一个美女,美女状态特征:身高,年龄,皮肤颜色,长短发等,美女的行为,如:走路,说话,唱歌,跳舞,比心等)4类是:把具有相同特征和行为的多个对象的抽象就是类。