大学JAVA课堂笔记

一、

1.学完java可以做java程序员、爬虫工程师、运维、产品·、设计;

2.微服务与分布式 SpringBoot+SpringCloud;

3.jdk(java开发环境)包含jre(java运行及环境)+jvm(java虚机机)  +  SE;

4.java是一种面向对象的语言,Java语言是强类型语言(Java是强类型语言,严格强调大小写,其包括两个方面的含义,所有的变量必须先声明,后使用。指定类型的变量只能接受类型与之匹配的值;

5.jdk能把java文件编译成class文件,并且执行class文件;

6. 标识符由数字(0~9)、大写字母(A~Z)、小写字母(a~z)、下划线(—)、美元符号($)、人名币符号(¥)以及所有在十六进制OxcO前的ASCLL码组成。(不能把关键字、保留字作为标识符)7.关键字是具有特殊含义的标识符、例如int、float、void等;

8.不能用关键字作为标识符、java类的命名规则,首字母大写java严格区分大小写;

9.java有3种注释方法,单行注释//、多行注释/* */、文档注释/** */;

10.指定类型变量只能接受类型与之匹配的值;

11.变量命名:变量类型+变量名字+赋值符号+值     例:int a = 1;

12.变量作用域规定了变量使用的范围,全局变量:定义在方法和代码块之外的变量,局部变量:定义在方法和代码块之间的变量,static修饰静态变量

全局变量,无static修饰只要对象被当作引用,实例变量就将存在

静态变量,用static修饰,生命走起决定于类的生命周期。类被垃圾回收机制彻底回收时才会被销毁

13.java是强类型语言;

14.java中八进制由0开头,如05,十六进制用0x开头,如0x0012a2;

15.java基本数据类型,byte字节型(1字节)、short短整型(2字节)、int整形(4字节)、long长整型(8字节)、double双精度浮点型(8字节)、fload单精度(4字节)、char字符型(2字节)、boolean布尔(1字节或无定义);

16、基本数据类型以外,如String

17.使用final定义常量

18.java中boolean类型只有true和false;

19.null为空引用,不存在,null能转换为任何类型;

20. public是关键字而Public则不是关键字。

二、

1.byte一字节,short两字节,int四字节,double八字节,char,float,long,boolean。

2.整形提升:byte->short->int->long->float->double;

3.小类型数据转换成大类型数据(隐式转换),java虚拟机能自己转换;

4.大类型转换成小类型数据是需要强制装换,语法:例如  int b = 0; long a = (int)b;

5.大类型转换成小类型容易造成进度丢失和溢出;

6.ascii最大为65535;

7.shout类型与char类型互相转化需要强制类型转化;

8.特殊的:char和shout互相强转换;

9.强制类型转换:double->float->long->int->shout->byte,小类型转化为大类型,小类型 变量名 = (小类型) 大类型变量;

10.基本数据类型和应用数据类型不能强制转换,即两种数据类型除非兼容,否则不能转换;

11.转换必须是继承关系;

12.任何数据类型与字符串做加号运算都会变为字符串;

13.++运算符可以让变量自增,例如用int i = 0;i = i++;num,a = -a,让符号

14.i++先赋值再自增,++i先自增再赋值;

15.+加,-减,乘*,除/,%取余;

16.算数运算符:有+=、-=、*=、/=,+=例如num+=2,本质是num = num + 2;其他的类同;

17.逻辑运算符,&&、||、!、|、&

18.&&与&和||与|的区别在于&&和||效率高,若能通过前面判断,就不会执行后面;

19.计算机做运算是会把数字转换成二进制;

20.关系运算符有> 、<、 >=、 <=、 !=、 ==;

21.基本类型变量不能和引用类型的变量使用==进行比较,布尔不能与任何数据类型比较;

21.equals(obj)方法和==用来比较字符串的区别的区别

    equals方法比较的是两个对象的内容是否相等

    ==比较的是字符串在内存中的地址是否相等;

22.浮点数使用==或者!=容易造成精度丢失;

23.java扫描仪:用户从控制台输入数据,后台java程序接受,Scanner;

24.scan.next()遇到空格就结束,只能读取空格或者回车前面的内容,而scan.nextLine()能读取空格,遇到回车结束;

25.位运算符包含4个:&与、或|、非~、异或^。

26.直接量(字面量):就是初始化的量,例int a = 8;a为8就是直接量;0x就是十六进制,0就是十进制;

27.相同字符串在创建后在常量中地址不变,例如String str1 = “abc”;String str2 = “abc”;str1 == str2为true;

三、

1.在java中,有些语句能被识别,但是没有任何意义,比如3.14;

2.复合语句又称语句块,是很多语句的组合,从而可以将多个语句看作单个语句;例如num += 2;

3.选择结构例如if else,if{     //代码块        };   else{      //代码块       };

4.分支分为多分支、单分支、双分支,都使用if、 else if、 else;

5.用equals比较两个字符串是否相等,例如String str = "123456";        "123456".equals(str);

6.三目运算符  :   条件表达式  ?  表达式1  : 表达式2;当表达式结果为true,执行表达式1,否则执行表达式二;

例如 a = a>b ? a : b;

7.条件表达式  ? (条件表达式  ?  表达式1  : 表达式2) :(条件表达式  ?  表达式1  : 表达式2);

8.case语句可以用字符串、int等,case的值必须唯一,否则会报错,如果没有break则称为switch穿透,没有Switch会一直往下执行;

9.if语句的效率没有switch语句高,if的应用更加广泛,何时应用那种语句应该根据实际情况而定,不能因为switch效率高就用switch,不能因为if常用就用if。

10.while循环的使用,假如括号内的为true则执行,当while循环只有一句语句是可以省略

11.do while循环至少执行一次,而while可能一次都不执行,因为while循环是先判断再执行,而do while循环是先执行后判断

12.阶层可以用循环来运算,while、do while、for都可以。

13.for是应用最广泛,功能最强的的一种循环语句,for可以替代while循环,do while循环。结构为

14.for根据循环次数限制做多少次重复的操作,while循环当满足什么条件时才做某种操作,do while先执行一次,再判断是否满足条件。

15.break只能跳一个循环,continue是跳过此次循环,直接执行下一次循环,fro each还是fro循环;

16.可变参数最终会被封装成一个数组;可以用for(i;num)打印遍历;

17.可变参数必须位于参数列表的最后一个;

18.不提倡使用递归算法,因为效率极低;

19.数组中int的初始值是0,double的初始值是0.0,char的初始值是空格,float类型定义的数组,默认值是0.0, Data、String类型定义的数组,默认值是null。

四、

1.二位数组用数据类型 [][] = new 数据类型[][];

例如: int[][] arr = new int[2][3];

2.遍历二位数组;

可以用两个for-each,例如for(int i:arr[])for(int j:arr);遍历二维数组;

3.访问二维数组的语法:arr[x][y] = 1;就是给第x + 1行第y + 1列的值赋成1;

4.二维数组的存储,大概是arr[x][y]中,x存的是二维数组的索引,也就是数组的地址,x存在栈,y存在堆区;static修饰的存在方法区;在类中,static修饰可以直接用类名访问,用对象访问会报警告;      

5.System.arraycopy,src:原数组;srcPos: 原数组起始位置(从这个位置开始复制);dest:目标数组;destPos:目标数组粘贴的起始位置;length: 复制的个数

6.方法的重载是方法名相同,参数列表不同,返回值不做要求;

7.Arrays.copyOf(arr[],7);即arr【】为目标数组,7为新复制的数组长度;

8.数组的扩容与缩容量,使用int aee1[] = Arrays.copyOf(arr,5);

其中arr为原来的数组,5位新数组的大小;增容的操作也类同;这里并没有销毁原来的数组,准确的应该算复制;

9.Arrays.sort能对数组进行排序,返回值为int,返回数据为目标值的下标,二分查找的使用的前提是数组必须排好序;

10,使用equals能比较两个数组是否相等;两个参数分别是一个数组和另一个数组,如果相同返回true,如果不同返回false;

五、

1.每次新建一个对象时,会调用一次构造方法,如果没有则默认调用无参的构造方,构造方法可以重构。

2.在类里面,使用set方法时,变量要用this,this表示当前对象,当变量名有冲突时使用this,一个构造方法可以通过this调用另外一个重载的构造方法,直接调用会报错,要用this()。

3.在构造器中使用this调用另外一个构造方法时,必须位于第一行(第一次执行)。

4.java内存分为堆、栈、方法区,堆:new出来的对象,栈:局部变量,方法区:class字节码文件(静态方法、变量)。

5.内存区域类型:寄存器(最快的储存区、由编译器根据需求进行分配)、堆(存放所有new出来的对象)、栈(存放基本类型变量和对象的应用,字符串存放在常量池中)、静态域(存放静态成员)、常量池、非RAM储存。

6.java中的常量池,分为两种形态。内存管理由jvm进行管理,java中有垃圾回收器(GC)不定时到内存中清理垃圾,GC由jvm管理,c语言要自己free,System.gc()这是建议尽快回收。实例变量是成员变量。

7.凡是被private修饰的只能在本类中进行访问,被public修饰的在任何地方都能访问。

8.多态的表现形式:1、重写:根据对象的不同来表现多态。重载:根据参数的不同来变现多态。

9.对象:封装、继承、多态。

10.instanceof是java的一个二元操作符,它的作用是测试左边的对象书否是右边对象的实例。

六:

1.依赖倒转原则:这个是开闭原则的基础,具体内容:针对接口编程,依赖与抽象而不依赖于具体。

2。有23种设计模。

3.用static修饰的方法体用类名直接访问,而用final不能被继承,创建的变量不能被改变。

4.程序运行时先执行static修饰的,所以static不能访问非static修饰的,final不嫩1被重写。

5.如果一个类包含抽象方法,那么改类必须生成抽象类,抽象方法不允许有方法体,抽象方法可以重载,也可以重写。

6.abstract关键字不能修饰静态方法,只能修饰普通方法,构造方法也必能修饰,abstract关键字不能修饰构造器。子类重写父类时,必须重写所有的抽象方法,私有方法不能被abstract修饰。

7.运行时绑定(动态绑定)。

8.接口中的方法必须是抽象方法,抽象方法不能是static因为static要加载就必须有方法体。一个接口可以有多个方法。接口不能用于实例化对象,接口没有构造方法,因为不能被实例化。

9.访问接口中的常量,用类名访问,也可以用接口名访问,接口不能被实例化。

10.实现接口的两种方式,重写接口中的所有方法,把当前类变成抽象类。但是一般都不声明抽象类

11.java是单继承语言,只能继承一个抽象类,但能实现多个接口,接口不能被接口实现,接口不能实现接口。

12.接口的特性:接口中的每一个方法都是隐si的抽象方法,而接口中的变量都会被指定为public static final ,抽象类的方法可以有方法体非抽象方法,接口中不允许有方法体,接口中不允许有静态代码块,jdk1.8以后,接口里可以有静态方法和方法体。

13.接口:接口特性 抽象类和接口的区别,抽象方法:抽象方法 抽象类

七:

1.concat方法进行字符的拼接,使用str += str拼接,使用conca进行字符串拼接会节约空间。

2.使用str.length可以获取字符串的长度,使用str.toUpperCase将字符串装换成大写,使用str.toLonerCase将字符装换成小写,使用str+=str会造成产生很多的空间浪费,会在堆上的字符常量区创建很多的字符常量。

3.使用trim能去除字符串两边的空白,注意,这里中间的空白不能去除。

八.

1.截取字符串的两个方法,用substring(int beginlndex),用sunstring(int begin,int end)两种形式,第一个是从指定位置截取到结束(末尾),第二个是截取到end。

2.字符串可以用split分割,例如str.split(“ ”),以空格分割,返回字符数组,用数组0存放返回值,如果传入两个参数,则第二个参数就是分割的次数,返回三个字符创数组形。

3.如果用.或者/必须用转义符//进行分割,不能直接str.split(“.”)运行。

4. stringbuilder比stringbuffer更快,主要操作是append等,用构造器构造方法,默认容量为16个字符,在stringbuffer有的stringbuider都有,但buider更快

5.stringbuffer是线程安全的,而stringbuilder是更快的,但没有线程安全,在使用中优先使用stringbuilder,因为更快。

6.一般情况下,stringbuilder > stringbuffer > String

7.正则表达式支持的字符,任何合法的字符,\0八进制,\x十六进制,\u。

8.使用biginter比long的存储数字更大,

9.日期转换,DateFormat是日期格式化子类的抽象类,日期允许被格式化,创建方法为DateFormat df = DateFormat.getDate...

10.打印df.format(new Date());能获取当前时间,get后面不同,获取的也不同,。

11.SHOUT完全为字符,y为小写的年份,M月份,d月份的天数,D年份中的天数,E星期几,H一天中的小时数,h也是一天中的小时数,m分钟数,s秒数,S毫秒数。

12.SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日”)。

13.格式化日期,sdf.format(date)

14.getclass方法可以获取父类的信息,integer类有两个构造方法,有很多常用方法,bytevalue返回该byte值。

九:

1.collection接口有hashset类为优化查询速度而设计的set,Treeset类实现了set接口提取有序数列,ArrayDueue类是基于数组的双端列队,按先进先出的方式操作集合元素,LinledList对顺序访问进行了优化,TreeMap可以对舰队想进行排序。

2.add集合当中添加一个元素,addAll(c)像集合中添加集合c中的所有元素,contains(o)判断集合中是否存在指定元素,containsAll判断集合中是否包含集合c中的所有元素。isEmpty判断集合是否为空。remove(o)删除集合中的o,若有多个,则删除第一个。

3.List是一个有序的、可重复的、集合当中都有一个对应的索引,List集合默认按元素的添加顺序设置元素的集合,ArrayList类实现可可变数组的大小,储存在内的数据元素称为元素,ArrayList()构造一个初始容量为101的空列表,中E get(index)获得相应元素的下标值,intdex(o)返回此集合中的一次出现指定元素的索引,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值