JAVA小记

JAVA小记,第1张

注释:方便阅读、提高可读性(不会出现在字节码中)
单行 : //……后面均为注释内容
多行:  以/*开头,以*/结尾,其间内容均为注释;也可以使用作为行内注释,多行注释不能嵌套
文本:以/**开头,以*/结尾,包括一些说明性文字及一些jacaDoc标签

 标识符规则-驼峰规则
标识符是用来给变量、类、方法以及包进行命名的  
1、必须以字母、下划线、和美元符号$开头(极少人用汉字,数字不能开头
2、标识符其他部分可以是字母、下划线、和美元符号$、数字的任意组合
3、java 标识符大小写敏感,且长度无限制
4、标识符不可以是java关键字

使用规范:
1、表示类名的标识符:每个单词的首字母大写
2、方法名和变量名第一个单词小写,从第二个单词开始首字母大写(驼峰规则)如eat() eatFood()

关键字:先了解,以后会学到。

变量
1.what?可 *** 作的存储空间,从而 *** 作空间的值(类似车位)
2.变量名必须是合法字符,变量语句必须是一条完整语句,尽量不要一行多个语句;
3.变量必修要声明然后赋值,才能使用。
4.变量的分类
   1)局部变量:方法或语句块内部定义的变量,生病周期是从生命位置开始到方法或语句块执行完毕。
   2)静态变量:使用static定义,从属于类,生命周期伴随类始终。
   3)成员变量:方法外部、类的内部定义的变量从属于对象,生命周期伴随对象始终。

常量:通常指的是一个固定的值,如1,2,a,在java语言中通常使用fianl来定义
1)一但定义不能被改变
2)大写字母和下划线来表示: final  MANE_HELL=10

数据类型:布尔(boolean)类型(内存占1位)有两个常量值,不可以使用0或非0来替代true和false,一般用于程序流程控制

运算符
算数运算符中+,-,*,/,%属于二元运算符(需要两个 *** 作数)
二元算符运算规则:
1.如果两个 *** 作数有一个为long,则结果也为long
2.没有long时结果为int,即使 *** 作数全为short,byte,结果也是int
3.如果两个 *** 作数有一个为double,则结果也为double
4.只有两个 *** 作数都是float则结果才是float
5.取模(取余数)运算时可以为浮点数,一般使用整数,结果为余数,余数符号与左 *** 作数相同(如7%3=1,-7%3=-1)
算术运算符中++,--属于一元运算符,只需一个 *** 作数
++a与a++(同c++)
赋值运算符和扩展运算符:

扩展运算符:以+=为例,b+=a——>b=b+a  b*=a+3——>b=b*(a+3)  都是先算后边!
关系运算符:(结果只有boolean)值
逻辑运算符:(短路)特别注意短路与and短路或
位与运算符(对数字做按位运算):& 按位与 、| 按位或、 ^ 按位异或、 ~ 取反 、<< 左移 、>> 右移 
>>:右移一位表示✖2
<<:左移一位表示➗2
字符串连接符:+
string a="3"
int b=4;      ——>a+b=34 b+c+a=93 (起到连接作用)
int c=5;
条件运算符(三目运算符):x?y:z (y,z可以为任意类型如字符串)
1.先计算x的值,如果为true,整个运算的结果为表达式y的值,否则整个表达式的运算结果为表达式y的值
2.可以用if-else替代
运算符的优先级:(不用死记)
注意:表达式里面优先使用小括号组织 、逻辑非>逻辑与>逻辑或

自动转换类型(容量小的数据类型可以自动转换成容量大的数据类型)
1、容量是指数的表示范围
2、图(虚线表示可能存在精度损失)


3、整形常量可以直接赋值给byte,short,char等类型常量且不需要强制类型转换,只要不超过其表数范围即可
强制类型转换:
int x=(int)3.14  会有精度损失

 使用Scanner获取键盘输入:提高交互性,加头文件 import java.util.Scanner

控制语句:(控制语句执行顺序)
1,顺序结构
2,选择结构(if语句)
      #if单选择
     1)Math.random();返回0~1之间的一个随机数
     2)if {}


   

# if-else双选择
    1) Math.PI//3.1415926……
    2)Math.pow(r,2)//求半径的平方

 
     #if-else if-else (表示区间)


   

#switch(多选择结构,判断多值情况)
    1)break表示结束了switch语句
    2)switch(表达式//JDK1.5之前必须是整数或者枚举,JDK1.7之后允许是字符串)

 
3,循环结构(如果……则再继续……)
      1)”当型“
       #while 
      while(布尔表达式){
        循环体
        }

 
      #do{
          } while() //先执行再判断,用的很少
       #for循环
       1)相比while结构更清晰;
       2)for(i=1,j=3;i<5;j++,i++)//多个判断语句用“,”隔开


       3)死循环
       4)初始化作用域
      #嵌套循环

 break与continue(同C++)
带标签的break与continue(类似goto):
1)从一个带标签的地方跳到另一个带标签的地方

 语句块
1)花括号括起来的任意数量的语句
2)块确定了局部变量的作用域
3)无法被反复调用
方法(带名字的语句块,可以反复调用)
1)来完成特定功能的代码片段
2)格式:[修饰符1 修饰符2……]    返回值类型   方法名(形式参数列表){java语句}
     #1:形式参数:在方法声明时用于接受外界数据
     #2: 实参:调用方法时实际传给方法的数据,实参数目、数据类型和次序必须和形参列表相匹配
     #3: 返回值:方法在执行完毕后返还给调用它的环境数据,无反回值用void
     # 4:反回值类型:事先约定好返回值类型,若无返回值,必修显示指定为void
     #5 :java遵循值传递,基本类型传递的是该数据值的cpoy值,引用类型传递的是该对象引用的copy值,但指向的是同一个对象

 
方法重载
1)全部都是独立方法只是名称相同
2)条件:形参类型、形参顺序、形参个数不同不构成重载
3)只有 参数名称、返回值不同不构成重载
递归(自己调自己)
1.定义递归头。什么时候不调用自身方法(如果没有头将陷入死循环)
2.递归体。什么时候需要调用自身方法

 面向对象内存分析:
1)java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area
     #栈
     @描述方法执行的内存模型
     @jvm为每个线程创建一个栈,用于存放该线程执行方法的信息
     @栈属于线程私有,不能实现线程间的共享
     @ 栈的存储特性是“先进后出,后进先出”
     @栈是由系统自动分配的,速度快,是一个连续的内存空间
     #堆
    @用于存放创建好的对象
    @JVM只有一个堆,被所有线程共享
    @堆是一个不连续的内存空间,分配灵活速度慢
     #方法区(也叫静态区)
     @JVM只有一个方法区,被所有线程共享
     @方法区实际上也是堆,只是用于存储类、常量相关信息
     @用来存放程序中永远不变或唯一的内容
构造方法:用于对象的初始化
1)通过new关键字调用
2)构造器虽然有反回值,但是不能定义返回值类型,不能在构造器里使用return(返回值类型肯定是本类)
3)如果我们没有定义构造器,则编译器会自动定义一个无参构造器,如果已经定义则编译器不会自动添加
4)构造器的方法必须和类名一致

 垃圾回收机制
1)引用计数法
2)引用可达法
通用的垃圾回收机制:
对象分为年轻代、年老代、持久代

对象创建过程和this本质
创建对象步骤
1)分配对象空间并初始化
2)执行属性值的显示初始化
3)执行构造方法
4)返回对象地址给相关变量
this的本质就是“创建好的对象的地址”,可以再构造方法中用this代表“当前对象”

 static关键字
1)static 修饰成员的变量和方法,从属于类。普通变量和方法从属于对象
2)静态方法不能使用非静态方法
静态初始化块:在加载类时会执行,执行在构造函数之前//与继承有关,此出先不多赘述

JAVA的参数传值机制:值传递,指向同一个对象。

 java 包机制(包对于类就像文件夹对于文件)
包机制时java中管理的重要手段,在开发中我们会遇到大量同名的类,通过包我们很容易解决类重名问题,对类实现又效管理。
1)一定要加包!!!
2)package cn.sxt//位于非注释第一句,域名倒着写(jb.com//packge com.jb)

import
1)通过import直接将a包里的类导入b包
2)如果a包要用到b包中很多很多类,直接可以写import cn.sdx.*(类用*替代)

 继承
继承(extend)
1)父类也叫基类、超类、派生类等
2)java中类只有单继承,接口有多继承
3)子类继承父类,可以得到父类所有的属性和方法(除构造方法),但不见得都可以用(如私有)
4)使用ctrl+t方便的查看类的继承结构


方法的重写override(子类重写父类)
1)"==":方法名,形参列表相同
2 )"<=":返回值类型和声明异常类型,子类要小于父类
3)">=":子类的访问权限大于等于父类

Object 类的重写
Object 类是所有java类的根基,所有java对象都有Object 类的属性和方法
方法1:to string(也可重写)
方法2:equals(提供定义“对象类名相等”的逻辑)

 super:直接父类对对象的引用,通过super来访问父类中被子类覆盖的方法和属性。

分装(实现高内聚,低耦合):
1)提高代码安全性和复用性
2)封装细节,简化外部
途径:加访问控制符
1)private :同一个类可见
2)defaute:同一个类、同一个包可见
3)procted:同一个类、同一个包、子类可见
4)public:同一个类、同一个包、子类,所有类可见

细节:
1)对于类的属性一般使用private ,如果要改变private a 的值可以用set get 快捷键
2)  方法一般为public

多态
1)指的是同一个方法调用,由于对象不同可能会有不同的行为
2)多态指方法的多态,属性没有多态
3)多态存在的条件:继承、方法重写、父类引用指向子类对象
4)父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态产生 

对象的转型
向上转型,向下转型,转型后方法使用会受限,需要强制转回来。

final
1)如果修饰常量:表示这个值不可更改
2)修饰方法:表示这个发给发不可被子类重写,但可以重载
3)修饰类:该修饰下的类不可被继承

数组(数组就是对象)
1)相同类型数据的结合java中数组长度确定,从0开始,注意不要越界!!
2)每个元素都可以看成对象
3)类型[长度]  数组名//类型 数组名[长度]
4)声明数组后一定要初始化//通过下标、循环
5)*构造器可以通过source生成

数组的初始化:
1)静态初始化


 

 2)动态初始化
3)默认初始化

数组的遍历
for-each循环
读取数组元素的值,不能修改
for(int m:a/*将数组a中的值赋给m*/){System.out.println(m);}
 

//本篇部分图源自尚学堂 JAVA 高淇 java 300 集大型基础课程_哔哩哔哩_bilibili

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/876801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存