-
Java零基础学习,自己学习的资料
2018-03-26 17:42:09自己用于Java项目学习的经验,零基础走,看视频敲代码 -
java基础学习资料整理
2017-05-22 15:16:281.object中定义了哪些方法? clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(), finalize(), getClass() 2.ArrayList, LinkedList, Vector的区别是什么? ArrayList: 内部采用数组...1.object中定义了哪些方法?
clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(), finalize(), getClass()
2.ArrayList, LinkedList, Vector的区别是什么?
-
ArrayList: 内部采用数组存储元素,支持高效随机访问,支持动态调整大小
-
LinkedList: 内部采用链表来存储元素,支持快速插入/删除元素,但不支持高效地随机访问
-
Vector: 可以看作线程安全版的ArrayList
3.String, StringBuilder, StringBuffer的区别是什么?
-
String: 不可变的字符序列,若要向其中添加新字符需要创建一个新的String对象
-
StringBuilder: 可变字符序列,支持向其中添加新字符(无需创建新对象)
-
StringBuffer: 可以看作线程安全版的StringBuilder
4.Java中的四种引用及其应用场景是什么?
-
强引用: 通常我们使用new操作符创建一个对象时所返回的引用即为强引用
-
软引用: 若一个对象只能通过软引用到达,那么这个对象在内存不足时会被回收,可用于图片缓存中,内存不足时系统会自动回收不再使用的Bitmap
-
弱引用: 若一个对象只能通过弱引用到达,那么它就会被回收(即使内存充足),同样可用于图片缓存中,这时候只要Bitmap不再使用就会被回收
-
虚引用: 虚引用是Java中最“弱”的引用,通过它甚至无法获取被引用的对象,它存在的唯一作用就是当它指向的对象回收时,它本身会被加入到引用队列中,这样我们可以知道它指向的对象何时被销毁。
5.Map, Set, List, Queue、Stack的特点及用法。
-
Map<K, V>: Java中存储键值对的数据类型都实现了这个接口,表示“映射表”。支持的两个核心操作是get(Object key)以及put(K key, V value),分别用来获取键对应的值以及向映射表中插入键值对。
-
Set<E>: 实现了这个接口的集合类型中不允许存在重复的元素,代表数学意义上的“集合”。它所支持的核心操作有add(E e),remove(Object o),contains(Object o),分别用于添加元素,删除元素以及判断给定元素是否存在于集中。
-
List<E>: Java中集合框架中的列表类型都实现了这个接口,表示一种有序序列。支持get(int index),add(E e)等操作。
-
Queue<E>: Java集合框架中的队列接口,代表了“先进先出”队列。支持add(E element),remove()等操作。
-
Stack<E>:Java集合框架中表示堆栈的数据类型,堆栈是一种“后进先出”的数据结构。支持push(E item),pop()等操作。
6.HashMap和HashTable的区别
-
HashTable是线程安全的,而HashMap不是
-
HashMap中允许存在null键和null值,而HashTable中不允许
7.对于“try-catch-finally”,若try语句块中包含“return”语句,finally语句块会执行吗?
答案是会执行。finally语句是try执行完后必然会执行的。
特殊情况调用了System.exit()方法;JVM“崩溃”了。
8.简述Java中创建新线程的两种方法
-
继承Thread类(假设子类为MyThread),并重写run()方法,然后new一个MyThread对象并对其调用start()即可启动新线程。
-
实现Runnable接口(假设实现类为MyRunnable),而后将MyRunnable对象作为参数传入Thread构造器,在得到的Thread对象上调用start()方法即可。
9.简述Java中进行线程同步的方法
-
volatile: Java Memory Model保证了对同一个volatile变量的写happens before对它的读;
-
synchronized: 可以来对一个代码块或是对一个方法上锁,被“锁住”的地方称为临界区,进入临界区的线程会获取对象的monitor,这样其他尝试进入临界区的线程会因无法获取monitor而被阻塞。由于等待另一个线程释放monitor而被阻塞的线程无法被中断。
-
ReentrantLock: 尝试获取锁的线程可以被中断并可以设置超时参数。
10.TreeMap, LinkedHashMap, HashMap的区别是什么?
-
HashMap的底层实现是散列表,因此它内部存储的元素是无序的;
-
TreeMap的底层实现是红黑树,所以它内部的元素的有序的。排序的依据是自然序或者是创建TreeMap时所提供的比较器(Comparator)对象。
-
LinkedHashMap能够记住插入元素的顺序。
-
-
如何入门java(附带新手推荐学习资料)
2018-08-14 14:35:42本人自学Java基础已经有一个多月了,这一个月来走过了很多弯路。在里面兜兜转转,曾经也想过是否要放弃对这门语言的学习,怀疑过自己是否不适合当一个程序员。从无知迷茫到懊恼愤恨,最近才发现是我个人意识出现了...本人自学Java基础已经有一个多月了,这一个月来走过了很多弯路。在里面兜兜转转,曾经也想过是否要放弃对这门语言的学习,怀疑过自己是否不适合当一个程序员。从无知迷茫到懊恼愤恨,最近才发现是我个人意识出现了问题:因为我没能让自己爱上这门语言,所以我才会走那么多弯路。不要怕自己爱不上java,一定要相信自己,做了决定就勇敢地去做,真的努力了世界肯定会回馈你肯定的答案的。所以想在这里给各位想入门却力不从心的人分享一下这段时间自己的心路历程(附带学习方法以及给新手推荐的学习资料),有什么错误的地方欢迎大家提出:
一.你是否真的在学习?
关于这个问题并没有绝对的答案,但是什么是真正的学习?真正的学习是以自己最适合的学习方法,真正领悟了书中的知识点获得了幸福感,并把对知识点的理解整理记录下来。而获得的幸福感是持续学习的动力,记录的笔记不仅是对知识点的回顾,更是对幸福感的收藏。你不真正的理解掌握,何来的热爱呢?你是否真的做到了呢?在这里我先说一说我一开始的学习方法:
一开始朋友推荐我以写博客为记录感悟的方式(这也是为什么我在这里发表这篇文章的原因),因为人家有学过其他编程语言的基础,所以他写的博客固然好,条理清晰逻辑顺畅。但是我呢?大家去翻看以下我之前的博客就知道了,基本上每一篇文章都是一个知识点,非常杂乱有时候我自己过两天回来看都看不懂,更别说是复习了,自己看了都觉得讨厌。所以他是适合写博客,而我不适合,或者说我还没有达到那种学习程度。那不适合写博客,我是不是要换一下学习方法呢?所以我开始寻思我到底要怎么学习:
既然用键盘打的不行,那么我像以前上学一样,老老实实地把知识点记录下来怎么样?我想到了马上就去做,结合了思维导图,学习动力不断上升,对知识地理解也更加透彻了。我是这样理解的,义务教育培养了我们用纸和笔为武器去探索世界的能力,我们不能否认自己这个能力。应该是接受它,不带有排斥心理,只要是适合自己的方法就是好方法。附带我做了的一些笔记的图:
上面这张图是关于java迭代器的一些笔记,新手们可以参考一下。因为java是面向对象的语言,所以有时候程序代码一多,类也是层出不穷,自己看了好几遍都搞不明白。用笔和纸做笔记的好处就体现出来了:把接口、抽象类、具体类以自己喜欢的方式写出来,对着自己画的图来看程序思路将会非常清晰。我喜欢用虚线框表示接口,波浪线框表示抽象类,实线框表示具体类,箭头代表继承关系,就像下面这张图:
个人认为这些笔记相对于博客,更适合我们这些新手,有空的时候多翻一翻说不定又可以领悟到一些别的东西。
二.学习方法
除了上面说的记笔记的学习方法,我看的编程书是《Thing in java4》(网上很难找得到,就算找到也要小心,因为可能是第一版换成了第四版的封面而已。第四版一共有22章),用的IDE是MyEclipse 2014,还有API文档(就是java开源代码说明书)jdk1.8,所以我的电脑桌面一般都是这样的:
这就是我的学习方法,学习知识最大的困难还是要克服自己的排斥心理,学会让自己在学习过程中获得幸福感。如果你一直想着一步登天,一个星期看完一本书这些不以学习知识为核心目标的事情,那么你只会越学越懊恼越消极。只有认清你自己了,才能去更好地掌握其他技术。我们不做码农,而是要成为一个永远热泪盈,保持赤子之心,永不停歇的技术人!
三.学习资料
API文档和IDE网上随便一搜一大堆,可能就是IDE需要破解以下,不过网上都有教程。不推荐完全没有一点儿编程基础的小白看《Thinking in java4》,随着找一本简单的java书大概过一遍才看《Thinking in java4》,不然可能会看得云里雾里哦。标重点:想要《Thinking in java4》电子版的小伙伴们可以在评论区留下你的邮箱,我会尽快发送的哦!
-
java最简单最全入门基础笔记(不简单,不全你打我)
2019-11-11 09:55:51刚开始学习java的时候,可能是一头雾水,不知道从何学起,这里跟大家分享一下!(仅仅只供初级学者学习,大佬勿喷) 一、初始java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮》起床》洗漱》出宿舍》》吃早餐》...刚开始学习java的时候,可能是一头雾水,不知道从何学起,这里跟大家分享一下!(仅仅只供初级学者学习,大佬勿喷)
另外:这里还整理所有java基础单词 下面是链接
java基础单词
java第二阶段学习笔记 下面是链接
面向对象一、初始java
1.生活中的程序:
从起床到教室上课的过程
穿衣打扮》起床》洗漱》出宿舍》》吃早餐》到教室
按照特定的顺序去完成某一件事的过程我们叫做生活中的程序
2.计算机中的程序:
一组有序指令的集合,需要和计算机交流就要使用计算机语言,java就是计算机语言的一种
3.java能做什么:
1、开发桌面应用程序,比如:QQ、酷狗
2、开发internet应用程序,比如:淘宝、天猫
4.java技术平台:
1、Java SE:标准版,java的技术与核心,开发桌面应用程序
2、Java EE:提供企业级项目的解决方案,开发网页应用
5.安装jdk:
jdk:java的一个核心工具包
jre:java的一个运行环境(表示java除了可以在windows系统运行,还可以在苹果系统运行)
环境变量:告诉计算机可以执行.java的运行程序在哪里
6.开发java程序的步骤:
1、编写一个java源程序
新建记事本,将后缀名改为.java
2、编译java源程序,语法:javac 源文件名.java
编译后会生成一个.class的字节码文件
3、运行java程序,运行的是.class的文件,语法:java 源文件名
注意:java严格区分大小写
System.out.println () 打印之后换一行,先打印再换行
System.out.print () 打印之后不换行
7.转义字符:
使用"\n"进行换行
使用"\t"空格一个制表符的位置,也就是一个tab的位置,8个英文字母的长度
8.java中的注释:
//注释内容 单 行注释:表示对下一条语句进行一个解释
/* 注释内容 */ 多行注释:表示对下面一段语句进行一个解释
/**注释内容 */ 文档注释:表示对一段文本注释
注释的语句是不会进行编译的
9.java的编码规范:
1、遇到大括号 { 就进行一次缩进,缩进距离一个tab键的长度
2、每一个大括号 } 单独占一行,表示一段语句的结束
3、 ; 表示每行语句的结束,每一行只写一句代码
10.使用开发工具开发java程序的步骤:
1、新建一个java工程
2、选中新建的工程,选中src文件夹,点击右键new,新建一个class,新建时选中
public static void main这一项,会自动生成java源程序的框架
3、去编写java源程序
4、编译java源程序,开发工具会自动编译
5、运行java程序二、变量、数据类型和运算符
1.每个程序都只有一个入口,也就是只有一个main方法,只有一个程序可以打开QQ,其他的地方都打
开不了2.程序没有运行是存储磁盘上,运行在内存中
3.酒店中入住:
1、开房间(根据不同人数开不同类型的房间)
2、入住4.变量的概念:内存根据数据不同类型开辟的这个空间叫做变量
酒店 相当于 内存
房间 相当于 变量
入住的人 相当于 数据(变量值)
房间类型 相当于 数据类型(数字还是文字)
房间号 相当于 变量名5.变量名:用于快速找到内存中变量空间位置取得名字
6.数据类型:
数值型:
1、整型(int):用于存储整数,整数的类型123,999,666
byte字节型,short短整型,long长整型
long》int》short》byte
2、非整型:用于存储小数,小数的类型1234.5,3.14
双精度浮点型(double):小数的长度比较长
单精度浮点型(float):小数的长度短一些
非数值型:
1、字符型(char):用于存储单个字符,都需要使用英文状态的单引号括起来
比如:‘男’、‘女’、‘开’、‘关’
2、字符串型(String):用于存储一串字符,存储0~n个字符,都需要用英文状
态下的双引号括起来
比如:“我的名字是张三”,“我的爱好是打游戏”7.变量名的命名规则:
1、只能够使用_和$
这两个符号;
2、只能使用英文字母、_ 、$三个开头,后面的可以使用数字、字母和_ 、美元符号 ;
3、使用java语言中的关键字
4、采用见文识意的方式命名,采用驼峰命名法ageOfStudent,多个字母命名时,
第一个字母的首字母小写,后面字母首字母大写8.变量的使用:
1、声明变量,就是在内存开一个空间
语法:数据类型 变量名;(空格和分号不能少),比如:int qian;
2、变量赋值,就是将数据放到开辟的这个空间
语法:变量名 = 变量值;比如:qian = 1000;
3、使用变量
比如:System.out.println(qian);9.运算符的使用:
1、赋值运算符(=),将等号右边的值赋给左边
2、拼接运算符(+),将+左右两边的连起来表达式:就是符号(如加号、减号)与操作数(如b,3等)的组合,比如:b-1
算术运算符:
四则运算:+、-、*、/
%(取模运算):除以一个数得到余数,就是求余数的运算的运算10.从键盘扫描输入的值:
1、找到有扫描仪的商店,语法:import java.util.Scanner;写在public class的前面
2、购买一台新的扫描仪,给它取一个名字
语法:Scanner input = new Scanner(System.in);
3、使用扫描仪的扫描功能
如果扫描整数:使用input.nextInt();
如果扫描小数:使用input.nextDouble();
如果扫描字符串:使用input.next();11.类型转换:
自动类型转换:
1、必须两种类型互相兼容,比如:都是数值类型int和double,double和float
2、转换成的类型一定要比被转换的类型要大,比如:int转换成double
float转换成double
12.强制类型转换:
语法:数据类型 变量名 = (数据类型)变量名;
比如:double b = 3.14
int a = (int)b;
1、同类型的强制类型转换,比如:int a = (int)10.9;
2、不同类型的强制类型转换,只有char和int可以,通过ASCII码表去转换
比如:int b = (int)‘a’;13.运算符:
1、赋值运算符 =,将右边的值赋给左边
2、算术运算符+、-、、/、%,数学运算一样,先、/、%,后+、-
3、关系运算符(比较运算符):>、<、>=、<=、==、!=
4、逻辑运算符boolean类型(布尔类型):用于比较运算,只有两个值(true和false)默认false
14.运算符的优先级:
1、最高优先级,英文状态下的小括号()
2、最低优先级,赋值运算符=
3、算术运算符>关系运算符>逻辑运算符>赋值运算符三、选择结构
1.if选择结构
if基本选择结构
语法:if(要满足的条件){
如果条件为true的时候,进入大括号中
满足条件之后得到的结果,不满足条件不会去执行
}
如果条件为false的时候,绕过大括号执行外面的条件只能是boolean类型的数据
2.逻辑运算符:
&&(shift+7):and符号,并且的意思,同时满足连接前后条件才为true,有一个不满足为
false
||(shirt+):或者的意思,只要前后两个条件一个为true,整个表达式就为true,同时为
false才为false
!(shirt+1):非的意思,就是取反,如果表达式为true,使用非就为false3.if-else选择结构:
适用于基本选择条件的情况
语法:if(要满足的条件){
满足条件得到的结果
}else{
不满足条件的得到的结果
}4.产生一个随机数:
1、找到一个有随机数产生器的商店,语法:import java.util.Random;
2、购买一台随机数产生器并取一个名字,语法:Random ran = new Random();
3、使用这台随机数产生器的功能区产生随机数,语法:ran.nextInt(数字);
ran.nextInt(10) 表示产生一个0~9之间的随机数
ran.nextInt(10) +1表示产生一个1~10之间的随机数5.多重if选择结构:
适用于很多条件分支的情况
语法:if(要满足的条件1){
满足条件1得到的结果
}else if(要满足的条件2){ //默认不满足条件1
满足条件1得到的结果
}else if(要满足的条件n){ //默认不满足条件2
满足条件n得到的结果
}else{ //默认不满足条件n
不满足所有条件得到的结果
}
只要找到一个满足的条件,执行完之后,结束选择结构6.嵌套if选择结构
适用于在一个判断的基础再做一次判断的情况
语法:if(要满足的条件1){
满足条件1得到的结果
if(要满足的条件2){
满足条件2得到的结果
}
}else{
不满足条件1得到的结果
}==只能够比较数值类型,比较字符串是否相等,使用.equals(“要等于哪个字符串”);
比如:sex.equals(“男”);10 == 10四、循环结构
1.循环结构:
打印50份试卷,是从第1份开始打印,打印到第50份结束,重复打印试卷的过程
绕操场跑10圈,从第1圈开始,到第10圈结束,重复跑步的过程
做100道编程题,从第1题开始,到第100道结束,重复做题的过程
2.循环的概念:重复完成某一件事情或者某一个操作,有一个开始位置和结束位置就叫做
循环
3.循环的特点:
1、循环条件:也就是满足某个条件下才做重复的操作
2、循环操作:也就是重复所做的事情或者操作4.while循环的语法:
while(循环条件){
满足条件的时候所做的循环操作
}
特点:先判断,再执行
使用while循环的步骤:
1、确定是否存在重复操作
2、分析出循环条件和循环操作分别是什么
3、套用while循环语法写出循环结构
4、检查循环是否能正确退出5.do-while循环结构的语法:
do{
循环操作
}while(循环条件);
特点:先执行循环操作,再进行循环条件判断(先执行,再判断)6.while循环和do-while循环的差别:
1、循环的次序不同,while循环是先判断,再执行,do-while是先执行,再判断;
2、while循环在初始值不满足循环条件的时候一次都不会执行,do-while循环在初始值不
满足循环条件的时候至少执行一次7.程序调试:
断点调试的步骤:(每次调试后取消掉断点)
1、设置断点:在左侧边栏的位置点击鼠标左键两次,可以生成一个断点
2、进入调试模式:点击右键,选择debug as进入debug调试模式,程序会在设置断点的地
方停下来
3、单步执行,也就是一行一行的执行代码,按F6单步跳过执行代码
4、观察变量值的变化
5、找出错误的位置
6、改正错误
7、运行看结果是否正确**8.for循环结构
语法:for(表达式1;表达式2;表达式3){
循环操作
}
表达式1:循环从哪里开始,也就是循环的初始值,比如:int num = 1
表达式2:循环的条件,也就是循环到哪里结束,比如:num <100
表达式3:计数器,也就是每循环一次,初始值产生怎样的变化,比如:num++
每个表达式之间用分号隔开,每个表达式都可以不写,但是分号不能省略for循环的执行顺序: ①先去执行表达式1,也就是先去找初始值 ②第二步去执行表达式2,也就是去找循环条件 ③第三步去执行循环操作 ④最后才去执行表达式3,也就是最后才实现初始值变化的过程 表达式1和表达3中可以写多个,表达式2,条件只能有一个
9.跳转语句的使用:
break关键字:(通常和if选择结构一起使用)
在switch使用break表示结束switch选择结构去执行选择结构外的代码
在循环中使用break表示结束循环结构去执行循环结构外的代码continue关键字:(通常和if选择结构一起使用) continue只能够在循环结构中使用 在循环中使用continue表示结束当前这一次循环,然后开始下一次循环 使用场合:
break常用于switch结构和循环结构中
continue一般用于循环结构中
作用(循环结构中)
break语句终止某个循环,程序跳转到循环块外的下一条语句
continue跳出本次循环,进入下一次循环
10.循环结构四要素:
1、初始值,也就是循环要从哪里开始
2、循环条件,循环要到哪里结束
3、循环操作(循环体),就是需要重复做的某些操作
4、计数器(迭代部分),就是每次重复之后,初始值要产生的变化11.while、do-while和for循环的区别:
1、执行顺序不同
while和for循环:先判断,再执行
do-while循环:先执行,再判断2、适用场景(循环次数固定推荐使用for循环) for循环只适用于循环次数固定的情况 while和do-while循环无论循环次数是否固定都可以使用
五、数组
1.数组的概念
在内存中开辟的一串连续的空间,用来存储相同数据类型的,比如:鞋柜只会放鞋子,衣
柜只会用来放衣服2.数组的基本要素
1、标识符(数组名):数组的名称,用来区分不同的数组
2、数组元素:存放在数组空间中的数据
3、数组下标:对数组中的空间进行编号,区分每个空间,数组下标从0开始,可以通过数
组下标找到对应的空间
4、元素类型:数组的数据类型3.数组的定义和使用
1、声明数组:告诉计算机数组是什么类型
语法:数据类型[] 数组名 或者 数据类型 数组名[]
比如:String[] args;int[] nums,数组名的命名方式和变量命名方式一样2、分配空间:告诉计算机要开辟一串连续的多长的空间 语法:数组名 = new 数据类型[数组长度]; 比如:scores = new int[30]; 第一步和第二步可以一起写 数据类型[] 数组名 = new 数据类型[数组长度]; 3、赋值:向开辟好空间里面去存放数据 语法:数组名[数组下标] = 数据; 比如:scores[0] = 60;//表示将数组第一个空间存放了60这个整数 scores[1] = 80; 直接声明数组时就进行赋值 语法:数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据n}; 数据类型[] 数组名 = {数据1,数据2,数据n}; 注意:如果在声明数组时就直接赋值,那么不要写数组长度 比如:int[] scores = new int[]{60,80,100,50,60,70}; 通过循环的方式动态的录入数据 循环从初始0开始,到数组的最大长度结束,每次加1 for(int i = 0;i < 5;i++){ System.out.println("请输入第"+(i+1)+"名学生的成绩:"); scores[i] = input.nextInt(); } 4、数据的使用:将存放在数组空间中的元素拿出来使用 使用循环的方式将存放在每个空间中数据拿出来使用 for(int i = 0;i < 5;i++){ System.out.println("第"+(i+1)+"名的学生成绩为"+scores[i]); } 数组名.length表示数组的长度 比如:int[] scores = new int[10]; scores.length = 10;//数组长度为多少,该值就为多少
4.数组的排序
使用Arrays类,使用Arrays的步骤
1、找到有Arrays的商店,语法:import java.util.Arrays;
2、Arrays是一个公用的工具,不需要够买,只要去使用就可以,
语法:Arrays.sort(数组名);
它会将该数组进行一个升序的排列
二重循环:在一个循环中再使用一个循环结构循环特点:外层循环循环一次,内层循环循环一遍(也就是从开始到结束循环完)
while循环,do-while循环和for循环之间可以相互嵌套,也就是说while循环可以放while,
do-while和for循环,其他两种一样
5.二重循环中跳转语句的使用
continue:如果continue在内层循环中,表示结束内层循环的本次循环,开始内层循环的
下一次循环,如果在外层循环表示结束外层循环的本次循环,开始外层循环的
下一次循环,也就是说,continue在哪一个循环的{}中,就结束哪一个循环的
本次循环,开始该循环的下一次循环。
break:如果break在内层循环中,表示结束内层循环的整个循环,开始执行内层循环外面
语句,如果在外层循环中表示结束整个循环,也就是说,break在哪个循环中,结
束的就是哪个循环的整个循环。六、类和对象
1.OO:Object Oriented表示面向对象的意思
2.世界由什么组成:水,陆地,草,人,动物,植物,楼房,汽车等等
由所有一切真实存在的东西组成,这些真实存在的东西就叫作对象属性:就是对象所具有特征
方法:就是对象所执行的行为或操作
对象:用来描述真实存在事物的一个实体,由一组属性和方法组成封装:对象的属性和方法通常封装在一起,共同体现事物的特性,两者不可分割
类:将对象共同的属性和方法抽取出来就是类
类是模子,定义对象所具有的属性和方法3.类和对象的关系:
类是抽象的,对象是具体的实体
对象是类的一个实体,类是对象的抽象概念4.定义一个类的步骤:
1、新建一个class,给这个class取一个类名,名字和你想要定义的类型一致
类名的取名方式,使用帕斯卡命名法,所有单词的首字母大写
2、定义类的属性
3、定义类的方法5.使用定义好的类:
1、新建一个对象,语法:类名 对象名 = new 类名();
比如:Car car1 = new Car();
2、通过“.”操作符来使用这个对象的属性和方法六、类的无参方法
1.定义类的方法:
语法:返回修饰符 返回值类型 方法名(){
//具体实现方法的操作
}
比如:
public void sayHello(){
//具体实现方法的操作
System.out.println(“你好”);
}
1、访问修饰符(在哪些地方能够使用这个方法),public公共的,最高级别
2、返回值类型,执行完方法后能够得到什么数据
void,表示没有返回值,也就是没有任何数据返回
如果有数据返回,那么就需要使用return关键字返回一个数据,并且返回的数据类型
和返回值的数据类型一致
3、方法名(),方法名表示方法的名字
4、方法体:具体实现方法的操作2.编写类的方法步骤:
1、先定义方法的访问修饰符,先写没有返回值类型,定义方法名,方法名的命名采用见
文识意的方式
2、定义方法体,也就是写具体实现方法的操作
3、判断方法是否有返回值,如果有,添加return关键字返回该数据,并修改返回值类型方法是怎么去实现,方法是怎么实现的只需要在定义方法的关心,使用的时候只要知道是哪一个方
法是什么作用就可以了3.方法的调用:
1、在同一个类调用同一类中的方法,只需要通过方法名()就可以指直接调用
2、在不同类中调用方法,需要先new一个需要调用方法的类的对象,然后通过对象名.方
法名的方式去调用方法
调用方法的时候,实际上就是去执行方法体中的代码4.常见错误:
1、返回值数据类型必须和返回值类型一致
2、不可以返回多个值,也不能写多个返回值类型
3、定义方法不能够相互嵌套
4、程序逻辑代码(顺序、选择、循环结构)只能写在方法体中5.面向对象的编程:
类的方法实现某个特定的功能,其他类不需要知道它如何实现,只需要知道它是用来干什
么的6.全局变量:(成员变量)它是指定义在类中的变量,它在类中的任意位置都可以被识别
比如:类的属性
1、作用域:作用在类中任意位置
2、初始值不同:如果没有给它赋值,系统会默认给它一个初始值,int类型为0,double
为0.0,String为null
3、在同一个类中不允许同名存在7.局部变量:它是指定义在方法体中变量,它只能在该方法中被识别
1、作用域:作用在定义该变量的方法体中
2、初始值不同:必须给它赋值后才能去使用,系统不会给它赋初始值
3、在同一个类中,不同的方法中可以存在相同的命名,同名的两个变量没有任何关系
在同一个类中,允许局部变量和成员变量命名相同,如果两个命名一样,在使用时,局部变量有
更高优先级七、类的有参方法
1.带参数的方法:
无参方法:在方法名()的括号中没有参数的方法
有参方法:在方法名()的括号中有参数的方法2.定义有参方法的语法:
访问修饰符 返回值类型 方法名(参数1、参数2、参数3…参数n){
方法体(具体实现方法的过程)
}
3.参数:实际就是声明的一个变量,声明的变量使用“,”隔开
在定义方法的时候,方法中的参数只是进行了声明,并没有赋值,这个参数就叫做形式参
数,也就是形参;
在调用方法的时候,对方法中参数进行赋值,这个参数就叫作实际参数,也就是实参4.调用带参数的方法:
同一类中调用同一类中的方法,直接方法名()调用
不同类中调用不同类中的方法,先new一个对象,再通过对象名.方法名()的方式调用
必须和定义方法的参数个数相同,并且数据类型必须一致,顺序也要和定义的位置一致5.二次传递:在调用方法的时候,传递一个参数值给该方法,然后在该方法中去调用了另外的方法,
再将这个参数值传递给在该方法中调用的这个方法F5:单步跳入,遇到方法的时候回进入方法体中,逐方法体的代码一行一行的执行
F6:单步跳过,遇到方法的时候直接执行完方法,获得结果,不进入方法体6.对象数组:就是自己定义的类型的数组
自己定义类型,如果没有new一个对象,那么它的初始就为null7.包:在windows中以文件夹的方式存在
1)将类分为几个类似于文件夹的单元
2)防止命名冲突,在同一个包不允许重复命名,不同包可以重复
3)可以对类中数据中进行一个保护作用声明包,语法:package 包名; 必须为java源文件中第一条非注释语句
包名:1、通常由小写的英文字母组成,不能以圆点开头或结尾
2、开头一般是一个顶级域名cn,com,org,net
3、后续部分一般由公司名称、部门名称、小组名称、项目名称导入包:语法:import 包名;
导入包,可以将在这个包中的所有类导入到我们这个类中,导入后才能使用该包中的类
通过ctrl+鼠标左键点击进入定义方法的位置八、字符串
1.字符串:就是一个或多个字符组成
2.声明字符串:
1、直接声明,比如:String name = “张三”;
2、使用对象的方式,new一个String类的对象,
比如:String name = new String(“张三”);3.栈:用来存储较小的数据,离访问位置比较近,比如:int,double,short。。
堆:用来存储较大的数据,离访问位置比较远,比如:String,数组,自己定义的类型4.引用数据类型:通过在栈中的地址去引用存储在堆中数据的数据类型
只要使用了new关键字,就表示在堆中新开了一个空间,然后在栈中留下一个地址
String类型中的值是不可变的5.比较字符串:
使用比较的是存储的地址,引用类型地址不相同,不能使用比较
.equals比较的是存储的数据,将数据一一比较,字符串使用.equals比较是否相等
.equals()比较字符串是否相等
.equalsIgnoreCase()忽略大小写比较字符串是否相等
.toLowerCase()将字符串中所有字符转化为小写
.toUpperCase()将字符串中所有字符转化为大写6.获得字符串长度:
字符串名.length,获得字符串长度,每个字符就是一个长度7.字符串的拼接:
1、使用拼接符+进行拼接
2、使用.concat()方法进行拼接8.字符串的查询和提取
indexOf("@qq")、indexOf(’@’),查询第一个字符出现的位置
.lastIndexOf(‘7’)、.lastIndexOf(“77”),查询最后一个字符出现的位置
查询:字符串名.indexOf(需要查找字符串名),返回一个int类型的数据,第一个数从0
开始,返回字符串第一个字符所在位置,找不到指定的字符串返回-1
9.提取:
.substring(8)提取第9个字符串后面的所有字符串
.substring(8,12)提取从第8个字符到第11个字符,开始的位置从0开始数起,结束的位置
从1开始数起
忽略字符串前后的空格
.trim()忽略字符串前后的空格,中间不能忽略10.字符串的分割
.split(以什么为分割的字符),返回一个String的数组,将分割的每个字符串放到这个数
组中11.字符串的替换
.replaceAll(表示替换前的字符,表示替换后的字符),返回一个String的数据StringBuffer类,是一个可变的字符串类型
语法:StringBuffer sb = new StringBuffer(“小林”);StringBuffer的拼接:
.append(“需要追加的字符串”);追加的时候不会新开辟空间StringBuffer的插入字符:
.insert(插入的位置,要插入的字符);*有什么问题欢迎大家提出来 ♪(´○`)o团结就是力量
-
Java基础学习资料
2019-09-27 10:43:27Java基础学习资料 git网址: https://github.com/doocs/advanced-java展开全文 -
JAVA入门学习资料
2006-11-03 00:24:00一、入门 《Java 2从入门到精通》- 推荐 《Thinking in Java》- 强烈推荐* O’reilly的Java编程基础系列 - 参考* 二、进阶 《Java Cook Book》- 非常推荐* (包含了Java编程的Tips,适合当做手册来查阅) 《O’... -
从入门到精通,Java学习路线导航
2019-09-09 11:00:25引言 最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复...首先是基础阶段,在基础阶段,我们必须掌握Java基础,Mysql数据库,Ora... -
java教程,java视频,java基础教程,初级Java入门到精通
2016-09-05 14:14:54不管你是Java小白,还是Java初级, 没关系,学完我们的教程,你会对Java的核心知识体系有清晰的理解,你将会站在高处鸟瞰Java,为接下来的学习打下坚实的基础。 本教程的每一个细节都经过精心专研,完全针对Java初学... -
Java入门学习路线目录索引(持续更新中)
2019-10-08 16:33:09一、Java基础 Java基础-继承 Java基础-抽象 Java基础-接口 Java基础-多态 Java基础-重写 Java基础-匿名对象 Java基础-内部类 Java基础-final、static关键字 Java基础-ArrayList集合 ... -
Java学习指南(Java入门与进阶)
2017-08-09 15:30:12这是Java学习指南系列课程的第1篇,介绍Java语言的入门语法,引领希望学习Java语言编程的初学者进入Java大门。 本课程不需要其他语言作为基础,可以直接学习。 课程从Java开发平台的下载和安装开始,从... -
JAVA基础详细笔记Java入门到精通JAVA学习笔记
2015-04-28 22:16:40JAVA基础详细笔记Java入门到精通JAVA学习笔记 -
Java基础部分_Java基础入门阶段(零基础java入门教程)_学习笔记
2018-11-12 21:26:59本文学习内容来自腾讯课堂提供的学习视频。...Java基础入门阶段(javase教程,零基础java入门教程)(阶段一)。 本文是对该培训视频的学习笔记。仅供参考。 class Demo{ public static void main(S... -
java基础入门学习
2017-07-09 02:35:01Java基础语法 Java初识 Java常量与变量 Java运算符 Java流程控制之选择结构 Java流程控制之循环结构 Java数组之一维数组 Java数组之二维数组 Java方法 Java基础语法测试 Java面向对象 Java面向对象 ... -
java学习笔记:零基础java学习路线+配套资料+书籍推荐
2019-04-23 15:34:08零基础学习路线 零基础-java学习路线(上) 零基础-java学习路线(中) 零基础-java学习路线(下) 03 优质学习资料 各类求职项目 优质全套学习资料集合 4T普通资料以及系列精品资料:点击“阅读原文... -
-
迭代器 Iterator
-
jdk-8u271-windows-x64.zip
-
php base64互转pdf 将base64解析成pdf
-
【数据分析-随到随学】量化交易策略模型
-
C/C++编程全家桶(Daozy极限编程)
-
FPGA 高级设计:时序分析和收敛
-
今天很累
-
css selector什么意思
-
【数据分析-随到随学】Mysql数据库
-
java-函数式编程
-
876. 链表的中间结点
-
sdftrffff
-
FPGA设计中 Verilog HDL实现基本的图像滤波处理仿真
-
JavaEE框架(Maven+SSM)全程实战开发教程(源码+讲义)
-
Java学习路线,好的学习路线和好的方法,能让我们少走些弯路
-
【opencv-python】 cv2.resize(...)缩放图像
-
linux 软硬链接详解,下附原地址
-
微猫wetool个人版安装包修复低版微信问题.exe
-
傲梅轻松备份AOMEI_Backupper_v6.3.rar
-
c语言算法的学习(数学算法,欧几,概率论)