java笔记(1)

  1. 编译java:javac 路径\文件名.java path可以是绝对路径也可以是相对路径

  2. window的dos窗口快速切换,先找到该文件的路径,在该路径的搜索栏输入cmd,即可快速切换路径的dos窗口

  3. 运行java: java 类名 1)先切换到该类名文件下的路径,在运行java

  4. classpath-d:\course 配置了这个之后,类加载器只会去d:\course目录下找"xxx.class"文件,不会在从当前目录下找。

  5. java 路径\文件名 最新版本的jdk可以这样运行,是在内存里生成类文件

  6. public class test{}public表示公开的,class表示定义一个类,test是一个类名。
    类名后面必须是是一个大括号,这大括号是一个类体,类体里放方法。
    public static void main(string[] arges){} 主函数

  7. system.out.println(); 向控制台输出一句话

  8. 标识符:可以标识类名,方法名,变量名,接口名,常量名… (程序员自己有权命名的单词)
    (1)标识符不能以数字开头,标识符严格区分大小写
    (2)标识符命名规范:
    1. 类名、接口名首字母大写,后面每个单词首字母大写;
    2. 变量名、方法名首字母小写,后面每个单词首字母大写;
    3. 所有常量名全部大写,并且单词和单词之间用下划线衔接

  9. 变量
    (1)就近原则:哪个离我近,我就访问那个。成员变量和局部变量定义同一个,在方法里访问的是局部变量

  10. 转义字符 \t tab键 \n 空格 '表示普通的’ \表示一个普通的\ "表示一个普通的“ \u 表示一个uniccode的编码

  11. .(1)java中有一条重要的默认规则:所有的数字会默认当成int类型来处理,除非数字后面加上l或L,小容量写
    到大容量时不加l会报错,所有的浮点型数据默认被当做double类型,除非后面加上f或F
    (2)大容量转小容量,要加强制类型转换符,而且可能会丢失精度,long转int是砍掉前面4个字节
    (3)byte,char,short做混合运算的时候,首先先各自转换int在做运算

  12. 逻辑运算符要求两边到时布尔类型,并且最终结果也是布尔类型

  13. 短路与&&:左边表达式已经是false,右边表达式不执行,比使用&效率高

  14. 使用扩展赋值运算符,永远不改变运算结果类型

  15. +运算符在java中有2个作用
    (1)求和:当运算符两边都是数字类型时
    (2)字符串拼接:当+号两边的任意一边是字符串,就进行字符串拼接
    (3)当一个表达式当中有多个加号时,遵循"自左向右"的顺序执行

  16. 怎么接收用户键盘输入
    (1)直接在程序里写
    java.util.Scanner s = new java.util.Scanner(System.in);
    // 接收整数 int i = s.nextInt();
    // 接收字符串 String str = s.next();
    (2)在第一行调用
    import java.util.Scanner;
    Scanner s = new Scanner(System.in);
    int h = s.nextInt();

  17. switch(表达式)
    {
    case 值1: 语句体1; break;
    case 值2:语句体2;break;
    … //根据需求, 可以写多组case.
    default: 语句体n; break;
    }//并行执行
    case穿透现象:在switch语句中,如果case的后面不写break,将出现case穿透现象,也就是不会在判断下一个case的值,
    直接向后运行,直到遇到break,或者整体switch结束。

  18. break 语句会让离他最近的循环终止结束,不会终止方法

  19. continue语句可以指定循环

  20. JVM的主要的内存划分
    (1)栈: 存储局部变量以及所有代码执行的内存空间. 特点: 先进后出.(像杯子,数据就像杯子里的水)
    在方法被调用时,该方法需要的内存空间在栈中分配
    1. 栈帧:栈帧永远指向栈顶部的元素 .
    2.处于栈顶部的元素具备活跃权
    (2)堆: 存储所有new出来的内容(即: 对象)[存储对象以及对象的实例变量]. 特点: 堆中的内容会在不确定的时间, 被GC回收.
    (3)方法区: (代码片段|静态区)存储字节码文件的. 字节码文件: 指的是后缀名为.class的文件.
    1. 这个空间是最先有数据的,类加载器首先将代码加载到这来
    2. 储存代码片段

  21. 方法:代码得到复用,方法是需要调用才会执行.方法定义在类体中(方法是为了完成某个特定的功能)
    (1)定义: [修饰符列表] 返回值类型 方法名 (形式参数列表) { 方法体 }
    1. 修饰符列表不是必选项,目前为止,统一写成 public static
    2. 返回值类型可以是任何类型,只要是Java中合法的数据就行,包括基本数据类型合引用数据类型(返回值一般是指一个方法执行结束
    后的结果.结果通常是一个数据)
    3. void 是不返回任何值,如果返回值不是void ,在方法体执行结束后必须使用return 值;这样的语句来完成值的返回,如果把写
    return 值;这样的语句编译器就会报错,但是可以写return; 这语句的意思是立即终止当前方法
    4. 执行到return 关键字的语句执行,当前方法必然结束
    5. 形参列表中的每一个参数都是局部变量,个数可以为0~n个,形参有多个用逗号隔开,形参的数据类型起决斗作用,对应的变量名随意
    (2)怎么调用? 类名.方法名(实际参数列表)
    1. 实参和形参的个数和类型必须一一对应
    2. 在同一个类里面,类名.可以省略.但是要跨类调用的话,不能省略类名.
    (3)怎么接受返回值?
    1. 使用变量来接受,变量的定义需要指定变量的数据类型
    2. 方法调用可以写在 "system.out.println()"的小括号里来精简代码或者方法写在判断语句的小括号里.(这行代码是先执行括号里的)
    (4)方法重载
    1. 在同一个类当中 ;方法名相同 ;参数列表不同(个数不同;类型不同;顺序不同) .
    同时满足以上3高条件,那么我们就认定方法和方法之间发送了重载
    2. 功能相似的,可以让方法名相同,更易于以后的代码编写.
    3. Java编译器首先会通过方法名区分,但是Java允许方法名相同的情况出现,如果在方法名相同的情况下,编译器回通过方法的参数类型进行行区分
    (5)方法递归 方法自己调用自己
    1. 递归出现错误,看结束条件有没有问题,没有问题的话用 java-x 可以来看栈内存大小在进行调整大小

**22 . 面向过程和面向对象有什么区别?
(1)从语言方面出发:
对于C语言来说,是完全面向过程的。
对于C++语言来说,是一半面向过程,一半是面向对象。(C++是半面向对象的)
对于Java语言来说,是完全面向对象的。
(2)什么是面向过程的开发方式?
面向过程的开发方式主要的特点是:
注重步骤,注重的是实现这个功能的步骤。
第一步干什么
第二步干什么
另外面向过程也注重实现功能的因果关系。
因为A所有B
因为B所以C
因为C所以D
面向过程中没有对象的概念。只是实现这个功能的步骤以及因果关系。
(3)面向过程有什么优缺点?缺:耦合度高,扩展力差。优:快速开发
1)采用面向过程的方式开发一台计算机会是怎样?
这台计算机将没有任何一个部件,所有的都是融合在一起的。你的这台计算机是一个实心儿的,没有部件的。一体机。
假设这台一体机的任何一个“部位”出问题,整个计算机就不能用了,必须扔掉了。(没有对象的概念。)
2)采用面向对象的方式开发一台计算机会是怎样?
内存条是一个对象;主板是一个对象;CPU是一个对象;硬盘是一个对象;然后这些对象组装在一起,形成一台计算机。
假设其中CPU坏了,我们可以将CPU拆下来,换一个新的。
面向过程主要关注的是:实现步骤以及整个过程。
*(4)面向对象有什么优缺点? 耦合度低,扩展力强。
面向对象主要关注的是:对象A,对象B,对象C,然后对象ABC组合,或者CBA组合…
1. 对于小型项目(功能),采用面向过程的方式进行开发,效率较高。
不需要前期进行对象的提取,模型的建立,采用面向过程方式可以直接开始干活。一上来直接写代码,编写因果关系。从而实现功能。
2. 面向对象的方式: OOA:面向对象分析 OOD:面向对象设计 OOP:面向对象编程 整个软件开发的过程,都是采用OO进行贯穿的。
实现一个软件的过程:分析(A) --> 设计(D) --> 编程§
3. 面向对象包括三大特征:封装 继承 多态

***22. 类和对象的概念 面向对象当中最主要“一词”是:对象。
(1)什么是类?
类实际上在现实世界当中是不存在的,是一个抽象的概念。是一个模板。是我们人类大脑进行“思考、总结、抽象”的一个结果。
类本质上是现实世界当中某些事物具有共同特征,将这些共同特征提取出来形成的概念就是一个“类”,“类”就是一个模板。
(2)什么是对象? 对象是实际存在的个体。(真实存在的个体)
(3)在java语言中,要想得到“对象”,必须先定义“类”,“对象”是通过“类”这个模板创造出来的。
类就是一个模板:类中描述的是所有对象的“共同特征信息”对象就是通过类创建出的个体。
类 --【实例化】–> 对象(实例) 对象 --【抽象】–> 类
类 = 属性 + 方法 属性来源于:状态(多见于名词)[以"变量"的形式存在]对应的是数据 方法来源于:动作(多见于动词)

***23. 对象
(1)new 是一个运算符,专门负责对象的创建
(2)java中所有的"类"都属于引用数据类型
(3)成员变量没有赋值,系统会自动赋值,数值的都是0,布尔的是false,char是\u000,string是null
(4)保存了对象内存地址的变量,叫引用; 对象是通过new出来的,在堆内存中存储;
引用是但凡是变量,并且该变量中保存了内存地址指向了堆内存当中的对象(变量保存的是一个对象的内存地址,该变量就叫引用)
(5)怎么访问实例变量? 语法: 引用.实例变量名
引用是引用传递,基本数据类型是值传递.实际上都是值传递,只不过引用的值是内存地址,两个内存地址一样的指向同一块内存

**24. 构造方法 语法格式 :[修饰符列表] 构造方法名(形式参数列表){ 构造方法体; }
(1) 构造方法名和类名一致。
***(2) 构造方法用来创建对象,以及完成属性初始化操作。
*(3)构造方法返回值类型不需要写,写上就报错,包括 void 也不能写。(写上void就是普通方法)
修饰符列表写public 千万把要写public static
(4) 构造方法的返回值类型实际上是当前类的类型。
(5) 一个类中可以定义多个构造方法,这些构造方法构成方法重载。
(6) 当一个类没用提供任何构造方法,系统会默认提供一个无参数的构造方法(缺省构造器);当一个类中有一个有参构造方法,系统就不会提供无参数构造方法.
(7) 使用new运算符来调用构造方法
(8) 构造方法不能被 static、final、synchronized、abstract 和 native(类似于 abstract)修饰。构造方法用于初始化一个新对象,所以
用 static 修饰没有意义。构造方法不能被子类继承,所以用 final 和 abstract 修饰没有意义。多个线程不会同时创建内存地址相同的同一个对象,所以用 synchronized 修饰没有必要
25.方法注意事项:
(1). 方法与方法之间是平级关系, 不能嵌套定义.
(2). 方法必须先创建才可以使用, 该过程称为: 方法定义.
(3). 方法自身不会直接运行, 而是需要我们手动调用方法后, 它才会执行, 该过程称为方法调用.
(4). 方法的功能越单一越好.
(5). 定义方法的时候写在参数列表中的参数都是形参. 形参: 形容调用方法的时候, 需要传入什么类型的参数.
(6). 调用方法的时候, 传入的具体的值(变量或者常量都可以), 叫实参. 实参: 调用方法时, 实际参与运算的数据.

26.类
(1) 成员变量(属性):

  1. 和以前定义变量是一样的, 只不过位置发生了改变, 写到类中, 方法外
  2. 而且成员变量还可以不用赋值, 因为它有默认值.
    成员方法(行为): 和以前定义方法是一样的, 只不过把static关键字去掉.(static 表示是静态的)
    (2)格式
    1.创建该类的对象. 语法:类名 对象名 = new 类名();
    2.通过对象名.的形式, 调用类中的指定成员即
    (3)成员变量和局部变量的区别
  3. 定义位置不同
    –成员变量: 定义在类中, 方法外
    –局部变量: 定义在方法中, 或者方法声明上
  4. 在内存中的存储位置不同
    –成员变量: 存储在堆内存
    –局部变量: 存储在栈内存
  5. 生命周期不同
    –成员变量: 随着对象的创建而存在, 随着对象的消失而消失
    –局部变量: 随着方法的调用而存在, 随着方法的调用完毕而消失
  6. 初始化值不同
    –成员变量: 有默认值
    –局部变量: 没有默认值, 必须先定义, 再赋值, 然后才能使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值