[JAVA] JAVA基础

一、堆区和栈区

  1. 栈中主要存放一些基本类型的变量。
    (int, short, long, byte, float, double, boolean, char)和引用类型数据的内存地址。

  2. 堆中主要存放引用类型的数据。

  3. 栈的存取速度比堆要快。

  4. 栈数据可以共享。

  5. 栈的数据大小确定的,堆中数据大小可变。

二、数据类型自动转换

  1. 如果一个操作数为double型,则整个表达式可提升为double型。

  2. 满足自动类型转换的条件:两种类型要兼容,数值类型(整型和浮点型)互相兼容,目标类型大于源类型(例如:double型大于int型)。

  3. 强制转换: 如double b=3.98; int a=(int)b;

三、接收键盘输入

public static void main(String[] args){
  Scanner input=new Scanner(System.in);
  System.out.println("请输入一个数据:");
  //String s=input.next();
  int y=input.next.int();

  System.out.println("输出"+(y+5));
}

四、获取随机数

Math.random()
获取0-1内一个随机浮点数,不包含1。

Random e = new Random();
e.nextInt(10);
获取0-10内一个随机整数,不包含10。

五、保留2位小数

double a=15.3;
double b=3;

DecimalFormat df =new DecimalFormat("0.00");
String s=df.format(a/b);
double result=Double.valueOf(s);

System.out.println(result);

六、数组

  1. 定义:
//动态初始化
int[] a;
a = new int[3];
a[0]=8;
a[1]=8;
a[2]=8;

//静态初始化
int[] b=new int[]{1,2,3,4,5};
int[] c={6,7,8,9};
  1. for-each循环
    语法:
    for(元素类型 元素变量:要遍历对象){
    循环语句;
    }
    for each循环执行次数取决于遍历的对象元素个数。

  2. 数组增加元素

int[] oldArray={1,2,3,4,5,6,7};
int[] newArray=new int[oldArray.lenght+1];

for(int i=0;i<=oldArray.lenght-1;i++){
  newArray[i]=oldArray[i];
}
newArray[newArray.lenght-1]=0;

for(int x:newArray){
  System.out.printIn(x);
}
  1. Arrays工具类
    Arrays.sort(array);//排序
    Arrays.toString(array);//转字符串

七、排序

  1. 冒泡排序
    每次拿前一个值跟后一个值进行比较,如果前一个值大,就交换;
    每一轮会把当前的最大值交换到最后,直到排序成功。

  2. 选择排序
    依次在数组中选择一个值,跟后面所有的值进行比较;如果有值比这个值小,就交换。

  3. 插入排序
    把数组分成左右两部分,假设左边部分已经完成排序;依次从第二个元素开始,把每个元素插入到左边合适的位置。

八、类和对象

八-1 方法

  1. System.out.println()

println()是一个方法。
System是系统类。
out是标准输出对象。
这句话的用法是调用系统类 System 中的标准输出对象 out 中的方法 println()。

  1. 什么是方法?
    Java方法是语句的集合,它们在一起执行一个功能;
    方法是解决一类问题的步骤的有序组合;
    方法一般包含于类中;
    方法在程序中被创建,在其他地方被引用。

  2. 方法的优点
    使程序变得更简短而清晰;
    有利于程序维护;
    可以提高程序开发的效率;
    提高了代码的重用性。

  3. 方法定义格式
    访问修饰符 返回值类型 方法名(参数类型 参数名){

方法体

return 返回值;
}

八-2 类和对象

  1. 属性和方法是对象的基本构成。

属性:对象具有的各种特征,每个对象的每个属性都拥有特定值。
例如:张浩和李明的年龄、姓名不一样。

方法:对象执行的操作。

对象:用来描述客观事物的一个实体,由一组属性和方法构成。
对象同时具有属性和方法两项特性,对象的属性和方法通常被封装在一起,共同体现事物的特性,二者相辅相承,不能分割。

  1. 类和对象
    类是模子,定义对象将会拥有的特征(属性)和行为(方法)。
    类是对象的类型,对象是类的对象。

类是抽象的概念,仅仅是模板,比如:人。
对象是一个你能够看得到、摸得着的具体实体。

  1. 面向对象的思维

  2. 定义一个类
    所有JAVA程序都以类class为组织单元,我们使用关键字class定义类。

  3. 创建对象的步骤
    类名 对象名=new 类名();
    引用对象成员:使用“.”进行以下操作。
    引用类的属性:对象名.属性
    引用类的方法:对象名.方法名()

  4. this
    this表示当前对象
    作用:获取当前对象的属性;使用this调用构造方法。

  5. static可以修饰属性和方法

- static修饰 非static修饰
属性 类属性、类变量、静态变量 实例属性、实例变量
方法 类方法、静态方法 实例方法
调用方式 类名.属性
类名.方法()
对象.属性
对象.方法()
对象.属性
对象.方法()
归属 单个对象

九、面向对象三大特性

封装、继承、多态

封装:

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
封装的步骤:1)修改属性的可见性(设为private)2)创建公有的getter/setter方法(用于属性的读写)3)在getter/setter方法中加入属性控制语句(对属性值的合法性进行判断)。
使用private修饰的属性和方法只能在本类中被访问。
get()set()方法其实就是为封装而设计的。

  1. 4种访问修饰符
    访问修饰符可以用在类、方法、属性上面。
访问修饰符 本类 同包 子类 其他
private ☑️
默认(friendly) ☑️ ☑️
protected ☑️ ☑️ ☑️
public ☑️ ☑️ ☑️ ☑️

继承:

子类和父类是is-a的关系。
使用继承:编写父类class Pet{//公共的属性和方法} 编写子类,继承父类class Dog extends Pet{//子类特有的属性和方法} class Penguin extends Pet{//}。
子类继承父类后,自动拥有父类非私有属性和方法。一个父类可以被多个子类继承。在java中,一个子类只能继承一个父类。
子类不能继承父类的情况:(1)private成员(2)子类与父类不在同包,使用默认访问权限的成员(3)构造方法。

  1. super关键字
    子类访问父类成员
    (1)访问父类构造方法
    super();
    super(name);(在子类构造方法中)需要写在子类构造方法的第一行。
    (2)访问父类属性
    super.name;
    (3)访问父类方法
    super.print();

  2. final修饰符
    final可以用来修饰类、方法、变量;

final修饰的类不能被继承;
final修饰的方法不能被子类重写;
final修饰的变量不能改变值。

  1. Object类
    Object类是所有类的最终父类。

==:地址是否相同。
object类中的equals()方法和==意义相同。
字符串是一个类,也有equals()方法,但是字符串类对equals方法实现了重写。

重写object类中的equals()方法

多态:

同一个引用类型,使用不同的实例而执行不同操作。
使用多态的条件:编写具有继承关系的父类和子类;子类重写父类方法;父类引用指向子类的对象。
多态中有向上转型和向下转型。(向上转型是将子类对象转为父类对象使用;向下转型是将父类对象转为子类对象使用。)instanceof

  1. 抽象类
    抽象类只能被继承,不能被实例化。
    抽象类中可以有普通方法,也可以有抽象方法。(抽象方法没有方法体。父类定义的抽象方法,子类必须实现(重写),除非子类也是抽象类)

定义抽象类和抽象方法的目的:
1)使得父类更加简洁纯粹,只做规范而不用涉及具体内容;
2)对子类的方法进行了规范,方便统一管理和团队协同开发;
3)抽象类专门为继承而生。

  1. 接口类
    继承:is-a的关系; 接口:has-a的关系。

接口:
public interface MyInterface{
public void foo();
//其他方法
所有方法都是:public abstract
}

接口不可能被实例化;
实现类必须实现接口的所有方法;
一个类可以实现多个接口;
接口中的变量都是静态常量。

接口的存在可以解决Java中不能多继承的问题。

接口类属性是全局静态常量;接口类方法必须是public抽象方法;没有构造方法;无法实例化。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342