java 基础知识

main函数

java中静态的main 方法时是java程序执行的起点/入口,他将会被首先推入进栈。

java中标识符的命名能够允许的字符有 大小写 字符 下划线,命名规范分别为:

  1. 类名 大驼峰

  2. 变量/方法 小驼峰

实际上字面量 同时就是常量

字符常量使用单引号,两个单引号之间必须有且仅有一个字符。

同时System.out.println不能直接打印空常量NULL

数据类型分类

java中的数据类型大概分为

  1. 基本数据类型
  2. 引用数据类型

基本数据类型有,整数型,浮点型,字符型,布尔型

数据范围与字节数不一定相关。比如float占用4个字节直接,而long占用8个字节。但是float的范围比long大,原因在于内部的存储结构不同。同时浮点数会带来精度丢失的问题。

浮点数字面量,默认为double,如果需要使用float,需要加删后缀f.

整数,默认为int类型,如果需要使用long类型的话,使用后缀L.

数据类型转换

一般在不同的数据类型之间进行运算时,低范围的类型的数据会在不影响原来数据含义的情况下自动进行类型转换。如:

float a = 1 + 1.2;

有时候也可能需要进行强制类型转换,如

short a = 1;

由于从int类型的i转换称为short类型便会为影响源数据,所以java自动为我们进行了强制类型转换,可是有时候我们也会进行强制类型转换,如:

shrot a = (short) 200;

强转可能会存在的问题是,当数据超出了强转类型的范围以后会发生溢出.

像是byte / short / char运算时都将隐式提升为int类型,所以结果已经会是int类型。同时在赋值的时候,如果没有右侧没有超过左侧的范围,javac自动进行强制类型转换

java中常量+常量在编译时就会被计算。称为编译器的常量优化。

字符

ASCII码表映射了数字和字符。

Unicode码表又称为万国码,ASCII码定义的值在其中不变,但是增加了更多语言码表的映射。

运算

只有整数之间的取模运算才有意义。

数据运算中,如果参与运算的成员类型不同,将会按照成员类型中范围最大的值类型返回

string + 任何的值相加都会变成 字符串连接运算。并返回一个字符串。

流程语句

代码执行的顺序称为流程。在java中改变流程的语句和C语言中的并没有什么不同。

类和文件结构

IDEA中文件的组织形式为项目->模块->包->文件。

其中单个文件位于最底层,其实也就是单项class。实际上每个模块都可以视作为其它语言中的单个项目。

重载

重载,overload

指的是在拥有多个名称相同,但是参数列表不一样(参数类型,顺序或者个数)的方法的方法时。在调用相同方法发生不同的行为。

是否为重载与参数名和返回值类型无关,只与参数列表相关。

数组初始化

数组,引用类型,元素类型相同,数组长度不可更改

动态初始化 只提供类型和长度

int[] arr = new int[2];

静态初始化,提供元素

int[] arr = new int[] {1, 2};

省略格式

int[] arr = {1, 2};

或者

int[] arr;
arr = new int[] {1, 2};

java中如果尝试直接打印数组,得到的是数组对应的内存地址哈希值

java 内存划分

java中内存划分为

  1. 栈(方法栈) stack :方法在栈中运行,同时在stack中载入方法的上下文。如局部变量 , 方法参数, 块作用域中的变量等。

    当一个方法执行完成以后将会立即从栈中被推出。

  2. 堆heap: new出来的对象都将会保存到堆中。同时每个对象中的元素都会拥有对应的默认值。

    同时由于堆中的对象有具有方法的话,那么他会在自己的内部也就是在堆中属于自己的区域内存储成员方法(方法区)的地址

  3. 方法区(方法区) method Area :存放函数以及类的相关信息。

  4. 原生(本地)方法栈 Native Method Stack: 与操作系统相关,jvm在此调用系统的相关功能

  5. 寄存器 Pr Register: 与cpu相关

导入类

对于同属一个包的类,可以不写导包语句

需要使用其他包的类需要使用导入语句。如

import packagename.classname

变量

java中传递一个对象实际上就是传递一个对象的地址

局部变量没有默认值,成员变量(属性)拥有默认值NULL

因为参数在调用的时候 java必然会赋值,所以不会报错

变量的生命周期

局部变量再方法进栈时被创建,再方法出栈时销毁

成员变量随着对象的创建而被创建,当对象被垃圾回收也就被销毁

封装 继承和多态

private修饰成员变量使其不能够被直接修改和访问,而通过public的getter和setter方法来访问。

getter方法不能有参数,setter方法不能有返回值。同时对于getter和setter他们一定不是静态方法。

对于boolean类型的属性,getter方法命名必须为isXXX

同时在类中this代表当前被构造出的对象

构造方法

构造方法 (初始化对象)的作用也就是提供类实例的初始化操作,java中,如果不指定一个构造方法。那么java提供一个默认的无参数的构造方法。同时,当你显式提供了一个类构造方法的时候,你最好也同时提供一个无参构造的重载,因为那时候java将不再提供默认的无参构造。

构造方法的特征是,名称和类名相同,并且没有返回值。

我们可以通过IDEA的快捷键Alt+Insert 自动生成getter,setter,构造方法等

原文地址:https://www.cnblogs.com/freesfu/p/13729602.html