注释:方便阅读、提高可读性(不会出现在字节码中)
单行 : //……后面均为注释内容
多行: 以/*开头,以*/结尾,其间内容均为注释;也可以使用作为行内注释,多行注释不能嵌套
文本:以/**开头,以*/结尾,包括一些说明性文字及一些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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)