目录
注释
常量
数据类型
变量 -- 在程序运行过程中可以改变的量
标识符
类型转换
运算符
三元运算符
数据输入
if语句格式Ⅰ
if语句格式Ⅱ
if语句格式Ⅲ
switch语句
for循环语句
while循环语句格式
do…while循环语句
跳转控制语句
Random
数组
方法
方法重载
类和对象
封装
this关键字
构造方法
String
集合ArrayList;
继承
修饰符
多态
抽象类
接口
注释
单行注释://
多行注释:/* 内容*/
常量整数常量、小数常量、字符常量、布尔常量(true false)、空常量(null)
数据类型 数据类型 | 关键字 | 内存占用 | 取值范围 |
整数 | byte | 1 | -125~127 |
整数 | short | 2 | -32768~32767 |
整数 | int | 4 | -2的31次方~2的31次方-1 |
整数 | long | 6 | -2的63次方~2的63次方-1 |
浮点数 | float | 4 | 负数:-3.402823E+38~-1.141238E-45 正数:1.401298E-45~3.402823E+38 |
浮点数 | double | 8 | 负数:-1.797693E+308~-4.90000000E-324 正数:4.9000000E-324~1.797693E+308 |
字符 | char | 2 | 0-65535 |
布尔 | Boolean | 1 | true false |
//定义变量
int a = 10;
变量使用的注意事项
①变量名字不能重复
②变量未赋值不能使用
③long类型的变量
long a = 1000000000;类型越界了
正确为long a = 1000000000l; 后边加个L就好了
④float类型的变量
浮点数默认是double类型
所以定义float类型时
float f = 13.14f;
标识符规则:
- 由数字,字母,下划线,和美元符号组成
- 不能以数字开头
- 不能是关键字
- 区分大小写
命名阅读:
小驼峰命名法:firstName、name【方法变量】
大驼峰命名法:GoodStudent、Student【类】
类型转换自动类型转换 -- 把范围小的数值或者变量赋值给数据范围大的变量
eg.byte d = 10;
int b = d;
char = d;类型不一样转换错误
强制类型转换 -- 把数据范围大的数据或变量赋值给数据范围小的变量
int k = (int)88.88;此时k转换为88了
运算符算术运算符
运算符和表达式
运算符:对常量或者变量进行 *** 作的符号
表达式:常量变量和运算符组成的式子
【整数相除只能得到整数,要得到小数得浮点数参与】
字符加整数时加的是字符的asc码,字符串相加时是粘贴
逻辑运算符
短路逻辑运算符
只要左边是false,右边就不执行了
比如(i++>100)&&(j++>100)如果左边发现false了右边j++就不会执行
三元运算符a>b?a:b;如果true就a 如果false就b
数据输入import jave.util.Scanner;
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();【这里我目前感觉有变,比如字符不行】
流程控制
if语句格式Ⅰ if语句格式Ⅱ if语句格式Ⅲ switch语句实验最后那break可以不加中括号。
for循环语句 while循环语句格式 do…while循环语句 跳转控制语句 Random作用:产生一个随机数
import java.util.Random;
Random r = new Random();
int number = r.nextInt(10);范围0~10随机
【生成的是左闭右开的】
数组动态初始化
int[] arr = new int[数组长度]
内存分配
数组在初始化时,会为存储空间添加默认值
直接输出 arr 输出的是数组的内存地址
int[] arr2 = arr;
这一步是将栈内存中的数组地址交给arr2
静态初始化
int [] arr = new int[]{数据1,数据2,数据3};
好像可以更简单
【int[] arr = {1,2,3} 静态初始化相当于把默认值替换掉了】
数组常见错误
索引越界 -- ArrayIndexOutOfBoundsException
空指针异常 -- NullPointerException
遍历 -- 通过arr.length加上循环条件进行遍历
方法有独立功能的代码块,就是C的函数
方法的定义
public static void 方法名{
代码块
}
方法的使用:方法名()
带参数方法定义
带返回值方法
public static int aqiu(int num) {
System.out.print("庆秋的帅气有" + num + "分");
return num + 1;
}
方法重载【必须参数不同,且在同一类中】
【秋之感悟⭐我觉得可以说是参数重载,支持多种参数,多种返回值】
类和对象类是对象的实体
对象是类的抽象
【实例】
封装private -- 权限修饰符
被private修饰的成员只有在本类中才能访问
this关键字三大特征 -- 封装,继承,多态
构造方法构造无参构造方法,然后一大堆重载
String 集合ArrayList【秋之感悟:我觉得这个像是单纯数据结构体,看了一会感觉就是python字典】
【Array
arry.add("hello"); arr.add(1, "123");这一句表示在索引1的位置加123,然后原本索引1的数据被推到后边去了
注:如果你的索引位置比如有三个,你可以加在4那,但是不能加在5那个地方
常用方法:
创建集合对象
Array
局部变量 >成员变量>父类变量
子类中所有的构造方法默认都会访问父类中无参的构造方法父亲没有找爷爷要
@Override -- 注解 重写父类的时候用
这个东西相当于一个监督器,可以看你的方法名字写错没,写错了没这个的话会变成一个子类新方法,打上了这个的话名字错了会提示
注意:私有方法不能算作重写
子类重写父类方法时,只要你的权限不比父类的低就行
public > null >private
注意事项:
java不能继承多个类【我记着python可以】
但
是可以多层继承
【秋之感悟:痛定思痛,IDEA里快捷生成getset方法是alt + ins 我们是shift alt s 然后自己选要加啥方法,发现晚了现在十分悲伤】
修饰符关键字:
final -- public final void method(){}被final定义的方法叫最终方法,这种方法不能重写;public final int age = 20;这个被修饰的变量也是被定了;如果修饰了类的话这个类就断子绝孙了;最后一种情况 final st ?= new st();这个只是定了地址。
static -- 在定义成员变量的时候加上这个关键字意思是共享,一旦有一个有了大家都有了 public static String name;这样赋值以后建议通过类名访问而不是通过一个人来访问比如student.name不用去s1.name因为是共享。
多态多态的前提
①有继承/实现关系
②有方法重写
③有父类引用指向子类对象
Animal a = new Cat();这个就是创建多态
多态的形式访问成员变量运行要看左边,访问的是左边的成员变量
编译看左边,运行看右边,【目前只看到重写的方法能运行其他和右边无关 】
【秋之感悟,太牛拉,相当于有个方法里边形参是Animal a ,你可以把cat类的传进去就形成了多态,然后就可以用cat/dog里重写的方法了】
多态优点:提高了程序的扩展性
具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与 *** 作
多态缺点:不能使用子类的特有功能
多态中的转型
向上转型 -- Animal a = new Cat();
从子到父
父类引用指向子类对象
向下转型 -- Cat c = (Cat)a;【把上面的a强制转换成cat类】
从父到子
父类引用转为子类对象
抽象类在java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类;
【秋之感悟,就是一个方法没有{}和里边的东西,就在public和void中间加个abstract,注意,必须在抽象类里,所以类那也要写abstract】
抽象类无法正常创建对象 比如godAnimal a = new godAnimal
抽象类创建对象采用多态的形式
抽象类的成员特点
成员变量 -- 可以是变量也可以是常量
构造方法 -- 但是不能实例化,许个愿让儿子实现
成员方法 -- 抽象和非抽象方法都行
接口类和类之间是继承
类和接口之间是实现implements
类实现接口 【public class Cat implements Jumpping】
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)