0
点赞
收藏
分享

微信扫一扫

Java学习第一周总结笔记

夕阳孤草 2022-05-05 阅读 115

前言:

一:java常用命令及作用

盘符 切换到某个盘下:  D:

dir:常看当前路径下的文件信息

cd:进入单级目录:cd itheima

      进入多级目录:cd D:\ithelma\javase\diyitian

      回到上一级目录:cd..

      回退到盘符根目录:cd\

cls :清屏

上下键 :查找敲过的命令

tap:自动补齐命令(不见得正确,谨慎使用)

二:第一个java程序

HellowWorld

public class HellowWorld{

            public static void main(string[] args){

                        System.out.println("HellowWorld");

           }

}

正文:

一:

1.1java特性:

跨平台性 多线性 安全性 面向对象 简单性 高性能 分布式 健壮性

1.2运行机制

编译型+解释型

源文件>java编译器>字节码文件>类装载器>字节码校验器>解释>系统平台

虚拟机(JVM)运行环境(JRE)JDK:包括java虚拟机,库函数,运行Java必须的文件等

三者关系:JDK 包含 JRE 包含 JVM

JDK安装 环境变量Path设置

1.3第一个Java程序详解

1: java对大小写敏感。

2:关键字public:访问修饰符,用于控制程序的其他部分对这段代码的访问级别

3:class:类;Java是面向对象的语言,所有代码必须位于类里面

4:Java中,用花括号{}划分程序的各部分,任何方法的代码都必须以“{”开始,以“}”结束

5:一个源文件可以包含多个类,但一个源文件只能声明一个public类,源文件名必须和其中定义的public类名相同,且以“.java"为扩展名

6:main方法是Java应用程序的入口方法,他有固定书写格式

7:每个语句以分号结束,一个语句可以跨多行

注意:缩进规范  英文符号

二 数据类型与运算符

2.1注释

单行注释:以”//“开头,”//“后单行注释内容均为注释

多行注释:以“/*”开头,以“*/”结尾

文档注释:以“/**”开头,以“*/”结尾

2.2标识符

使用规范:

1:字母 下划线 美元符开头,其他部分可以是上面三个与数字的任意结合

2:大小写敏感 长度无限制

3:不可以是Java的关键字

4:类名标识符:首字母大写

   方法与变量:首字母小写,从第二个单词开始首字母可以大写

注意:Java采用unicode国际字符集,字母含义不仅是英文还包括汉字

2.3关键字

class if new  static public 等

2.4变量:可操作的存储空间

可以通过变量名来访问和改变

java是强类型语言,每个变量都必须声明其数据类型

变量的数据类型决定变量占存储空间的大小

变量包括:变量名,变量类型,作用域(只有在声明与初始化后才能使用)

2.4.2变量分类

局部变量:方法块或语句块内定义,使用时,必须先声明,初始化再使用

成员变量:方法外部,类内部定义,从属于对象,会自动赋值初始化

               int double类赋值为0  char类赋值为“\u0000"  boolean类赋值为false

静态变量:使用static定义,从属于类

2.5常量

主要利用关键字final来定义

常量一旦被初始化后不能再更改其值

声明格式:final type varname=value

建议:变量常量命名规范

1:所有变量常量名,方法 类名 见名知意

2:变量 方法名首字母小写

3:常量 类名 首字母大写

2.6基本数据类型

Java四大数据类型分类

1、整型

byte 、short 、int 、long

2、浮点型

float 、 double

3、字符型

char



4、布尔型

boolean

二、八种基本数据类型



三、数据类型详细介绍

1:整型(byte、short、int、long)

虽然byte、short、int、long 数据类型都是表示整数的,但是它们的取值范围可不一样。

byte 的取值范围:-128~127(-2的7次方到2的7次方-1)

short 的取值范围:-32768~32767(-2的15次方到2的15次方-1)

int 的取值范围:-2147483648~2147483647(-2的31次方到2的31次方-1)

long 的取值范围:-9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)

由上可以看出 byte、short 的取值范围比较小,而long的取值范围时最大的,所以占用的空间也是最多的。int 取值范围基本上可以满足我们的日常计算需求了,所以 int 也是我们使用的最多的一个整型类型。

2:浮点型(float、double)

float 和 double 都是表示浮点型的数据类型,它们之间的区别在于精确度的不同。

float(单精度浮点型)取值范围:3.402823e+38~1.401298e-45(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方)

double(双精度浮点型)取值范围:1.797693e+308~4.9000000e-324(同上)

double 类型比float 类型存储范围更大,精度更高。

通常的浮点型数据在不声明的情况下都是double型的,如果要表示一个数据时float 型的,可以在数据后面加上 "F" 。

浮点型的数据是不能完全精确的,有时候在计算时可能出现小数点最后几位出现浮动,这时正常的。

3:字符型(char)

char 有以下的初始化方式:

char ch = 'a'; // 可以是汉字,因为是Unicode编码

char ch = 1010; // 可以是十进制数、八进制数、十六进制数等等。

char ch = '\0'; // 可以用字符编码来初始化,如:'\0' 表示结束符,它的ascll码是0,这句话的意思和 ch = 0 是一个意思。

Java是用unicode 来表示字符,“中” 这个中文字符的unicode 就是两个字节。

String.getBytes(encoding) 方法获取的是指定编码的byte数组表示。

通常gbk / gb2312 是两个字节,utf-8 是3个字节。

如果不指定encoding 则获取系统默认encoding 。

4:布尔型(boolean)

boolean 没有什么好说的,它的取值就两个:true 、false 。

2.7运算符

Java 中常用的运算符:

    算术运算符

    赋值运算符

    比较运算符

    逻辑运算符

    条件运算符
2.7.1
算术运算符:+、-、*、/、%、++、--

+:加法,如1+2=3;

-:减法,如3-2=1;

*:乘法,如2*2=4;

/:除法,如4/2=2;

%:取余,如4%3=1;

++:自增1,如int i=1,i++;

--:自减1;如int i=2,i--。
2.7.2
赋值运算符:=、+=、-=、*=、/=、%=

=:赋值,如c=a+b即将把a+b得到的值赋给c;

+=:加等于,如a+=b等价于a=a+b;

-=:减等于,如a-=b等价于a=a-b;

*=:乘等于,如a*=b等价于a=a*b;

/=:除等于,如a/=b等价于a=a/b;

%=:模等于,如a%=b等价于a=a%b。
2.7.3
比较运算符:>、<、>=、<=、==、!=

>:大于,如a=1,b=2,a>b为false;

<:小于,如a=1,b=2,a<b为true;

>=:大于等于,如a=1,b=2,a>=b为false;

<=:小于等于,如a=1,b=2,a<=b为true;

==:等于,如a=1,b=2,a==b为false;

!=:不等于,如a=1,b=2,a!=b为true;

>、<、>=、<=只支持左右两边操作数是数值类型;

==、!=两边的操作数既可以是数值类型,也可以是引用类型。
2.7.4
逻辑运算符:&&、||、!、^

&&:与,如a&&b,若a与b都为true,则返回true;

||:或,如a||b,若a与b任一为true,则返回true;

!:非,如!a,若a为false,则返回true,即取反;

^:异或,如a^b,若a与b有仅有一个为true,则返回true。

2.7.5
条件运算符:(?:)(也叫三目运算符)

结构:布尔表达式a ? 表达式b :表达式c

为a为true,则取值b;若a为false,则取值c。

2.7.6

位运算符

按位与 异或  取反(-) 左移(<<) 右移(>>)

2.7.7

字符串连接符

+

2.7.8
运算符的优先级:(如下图

 

 2.8.1 自动转换类型:

(int)x

注意:操作数大时,;留意是否溢出

三 结构

3.1 选择结构

if

if-else

if-else-if-else

switch

补充:math.radom :返回0-1间随机数

3.1.2

if-else

补充:math类

3.1.3

if-else if-else

3.1.4

switch(表达式){

case 1:语句序列1;

[break]

……

default:默认语句;}

3.2循环结构:当型   直到型

3.2.1 while(条件){

循环体

}

3.2.2for与do while(先执行,后判断)

do{

循环体

}while(条件)

3.2.3 for

for循环 =while循环 但for更简洁

”,“在for里分隔不同变量

for( ;;)=while(true)

for里的i不能在外边使用

3.2.4嵌套循环

3.2.5 break与continue

break:强制退出循环

continue;跳出本次循环

3.2.6带标签的break continue

continue outer(内循环跳外循环)

outer:

         continue outer

3.3语句块

{  ……     }

3.4方法:一段用来完成特定功能的代码片段(类似于c和c++的函数)

声明:[修饰符1.修饰符2……]返回值类型 方法名(形参列表)

{java语句}

调用方法:

对象名.方法名(实参列表)

详细说明:

1:形参:在声明时用于接收外界传入的数据

2:实参:调用方法时实际传给方法的数据

3:返回值:方法在执行完毕后返回给调用它的环境的数据

4:返回值类型:事先约定好的返回值的数据类型。如无返回值,必须显示指定为void

注意:实参类型的数目与次序要和形参匹配

3.5方法的重载:实际是完全不同的方法只是名称相同

条件:形参的类型、个数、顺序不同

           只有参数名不同或返回值不同不构成方法的重载

3.6递归结构:”自己调用自己“

定义递归头:什么时候不调用自身方法,没有头就会变成死循环

递归体:什么时候调用自己

四 面向对象

4.1面向对象与面向过程

面向对象就是制造汽车前需要画的图纸,要考虑一辆汽车包括那些组成成分

面向过程就是制造汽车时的步骤,第一步,第二步等等

面向对象与面向过程并不是互相独立的

4.2对象的进化史(这不重要)

4.3对象与类

对象:object.instance

类:class:1、属性 2、方法

创建一个对象:SxtStu stu=new SxtStu   (通过构造方法来实现)

4.4面向对象内存分析(这有助于加深对编写程序的理解)

java虚拟机内存:

1:栈:方法执行内存模型    先进后出,后进先出(先执行的方法先占用存储空间,后执行的后占用,等到程序结束,先取消后执行的方法的内存,再取消先执行的方法的内存)   连续空间

2:堆:存储创建好的对象和数组    JVM是有一个堆,被所有线积共享   堆是不连续的内存空间,分配灵活,速度慢

3:方法区:用于存储类,常量相关的信息  存放程序中永远不变的量

(方法区属于堆,也就是说内存只被分为两块)

4.5构造方法:用于对象初始化

1:通过new关键字调用

2:有返回值,但不能确定类型,不能使用return返回某个值

3:如果没有定义构造方法,编译器会自动加一个无参的构造函数,已定义则不会自动添加

4:构造器的方法名要与类名一致

4.6构造方法重载(详细条件请见方法的重载)

4.7垃圾回收机制:发现无用对象然后回收空间

相关算法:引用计数算法    引用可达法(根搜索算法)

4.7.2分代垃圾回收机制(这也不重要)

4.7.3JVM调优,FullGC(不重要加一)

4.7.4内存泄露(不重要加二)

4.8 this关键字:创建好的对象的地址

1:在程序产生二义性之处,应使用this来指明当前对象,普通方法中,this总是指向调用该方法的对象,构造方法中,this总指向正要初始化的对象

2:使用this调用重载的构造方法时,要避免相同的初始化代码,但只能在构造方法中用,并且必须位于构造方法的第一句

3:this不能用于static方法中

4.9 static关键字

在类中,用static声明的成员变量为静态成员变量,也称类变量,类变量的生命周期和类相同

static修饰的成员变量和方法,从属于类,普通变量和方法从属于对象。

4.10 静态初始化块:用于类的初始化操作。在静态初始化块中不能直接访问非static成员

注意:静态初始化块执行顺序

1、上溯到object类,先执行object的静态初始化块,在向下执行子类静态初始化块,直到我们的类的静态初始化为止

2、构造方法执行顺序同上

4.11

参数传值机制:在java方法中,所有参数都是值传递,但引用类型指的是”对象的地址“。

4.12包:包对于类,相当于文件夹对于文件的作用

4.13 package

1、通常是类的第一句非注释语句

2、包名:域名倒写即可,再加上模块名,便于内部管理类

注意:写项目,要加包

com.gao与com.gao.car,这两个包没有包含关系,是两个独立的包

4.13.1JDK中的主要包(不是很重要)

4.13.2 import详解  静态导入详解

           import cn.sxt.oo.User

          import cn.sxt.oo.*(降低编译速度)

导入两个及以上,遇到同名的情况,直接指名

4.13.3 静态导入:导入类的静态属性

import static java.lang.Math.*

import static java.lang.Math,PI

5.1.1继承的实现:extends关键字

  class Student extends Person {

   }

5.1.3继承使用要点(关于5.1.2我也不知道为啥我手写的笔记上没有,可能跟其他章节融了?)

1、父类也称作超类 基类 派生类

2、Java中只有单继承没有多继承,因为会造成程序混乱

3、java中类无多继承,接口有多继承

4、子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得就可以直接访问

5、如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object

tips:可以使用ctrl+T方便查看继承层次

5.1.2 intance of 运算符:左边是不是右边的对象(5.1.2原来在这里,呦吼)

5.1.4 方法的重写:override:子类通过重写父类的方法,可以用自身行为替换父类行为(简单来说就是你从那你父亲那继承了一个房子,但你觉得不满意或者不想住,自己又重新买了一个)

要点:1、“”==“:方法名,形参列表相同

           2、”<=":返回值类型和声明异常类型,子类要小于等与父类

           3、“>=":访问权限,子类大于等于父类

5.2.1Object类基本特性:是所有Java类的根基,也就意味着所有的Java对象都拥有Object类的属性和方法

5.2.2to  String方法:打印一个对象,调用to String

to String(){return get class().getName+"@"+Integer to HexString (hashCode)};返回类名加地址

5.2.3 ”==“与equals方法的辨析

”==“:代表比较双方是否相同               equals方法:对象内容相等

5.3super关键字:直接父类对象的引用,可以通过super来访问父类中被子类覆盖的方法和属性

5.3.1 继承树追溯:构造方法第一句总是:super(......)来调用父类对应的构造方法

5.4.1封装的作用与含义:让代码都收束起来,看起来变得更简洁,更安全等

5.4.2封装的实现——使用访问控制符

private:表私有,只有自己类能访问

default:表没有修饰符修饰,只有同一个包的类能访问

protected:表可以被同一个的类及其他包中子类访问

public:表示可以被该项目的所有包中的所有类访问

5.4.3封装使用细节

1、类的属性一般用private

2、提供相应get/set方法来访问属性,这些方法通常是public修饰(Boolean变量get方法是is开头)

3、一些只属于本类的辅助性方法可以用private修饰,希望可以让其他类调用 的用public修饰

Java Bean:属性与其set\get方法

5.5多态:同一方法,不同对象会有不同的行为

要点:1、多态是方法的多态,不是属性的多态 

2、多态的存在要有三个必要条件:继承,方法重写,父类引用指向子类对象

3、父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了

5.6对象的转型(casting)

     自动向上转换    强制向下转换

     注意:java..lang.class.cast.exception:类型转换错误

5.7final关键字

1、修饰变量:被修饰的变量不可改变,一旦赋值就不能改  final int Max speeo=120

2\修饰方法;该方法不能被子类重写,但可被重载

final  void study(){            }

3、修饰类:修饰的类不能被继承

  final class A{               }

7.1数组的概述和特点

数组是相同类型数据的有序集合,每个元素可通过一个索引(下标)来访问他们

特点:1、长度确定

2、元素必须是相同类型

3、数组类型可以是任何数据类型,包括基本类型和引用类型

说明:数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量

7.2.1数组声明

1、type[] arr-name;  int[] arr01=new int[10];

2、type arr-name[];   String arr02[]=new String[5];

注意:java.lang.array.index.out of Bounds Exception:索引下标不在正常范围内

7.2.2数组初始化:静态 动态 默认

静态:int[] a={2,3,4,5}

动态:通过下标进行赋值

默认:int[] b=new int[2];   默认值为0;

布尔型:false

String:null

7.3.1数组的遍历:使用循环遍历初始化和读取数组

7.3.2 for-each 循环:专门用于读取数组和集合中所有的元素

for(int m:a){systym.out.println(m);}



 

举报

相关推荐

Java第一周学习笔记

Java学习(第一周)

第一周学习情况总结

Linux学习笔记(第一周)

第一周学习

寒假第一周总结

第一周

Java周记(第一周)

Vue第一周复习总结

0 条评论