JavaSE

1.初时java

JDK、JRE、JVM三者之间的关系

  • JDK:java开发工具包,包含JRE、javac、Jconsole、Jstack
  • JRE:java运行时环境,包含JVM、java基础类库
  • JVM:java虚拟机,运行java代码

2.数据类型与变量

基本数据类型分为四类、八种:

四类:整型、浮点型、字符型、布尔型

八种:

  • int占4个字节,long占8个字节
  • 整型默认是int,浮点型默认是double
  • 8个二进制(bit)为一个字节(byte),1kb=1024byte
  • 在给int设置初始值的时候,值的大小不能超过int的表示范围,否则会溢出
  • 长整型要在数字后面加个L或者l
  • short占2个字节
  • byte占1个字节,范围是-128~127
  • double占8个字节,是一个近似值,有精度误差
  • 对于 short, byte 这种比 4 个字节小的类型 , 会先提升成 4 个字节的 int , 再运算

3.运算符

短路求值

&& 和 || 都遵循短路求值原则。

&& 和 || 与& | 的区别在于,是否满足短路求值原则,即有一部分不满足以后,后面就不执行了。

位运算符

& 都为1才是1

| 有一个为1就是1

~ 0为1,1为0

^ 相同为0,相异为1

<< 最左侧不要了,最右侧补0

>>最右侧不要了,最左侧补符号位,正0负1

>>>最右侧不要了,最左侧补0

  • 左移一位 = 原数字 * 2
  • 右移一位 = 原数字 / 2
  • 位移效率高于乘除

4.程序逻辑控制

输出到控制台

System . out . println ( msg ); // 输出一个字符串 , 带换行
System . out . print ( msg ); // 输出一个字符串 , 不带换行
System . out . printf ( format , msg ); // 格式化输出
System . out . printf ( "x = %d\n" , x )

从键盘输入

使用Scanner读取字符串、整数、浮点数

String input = sc.nextLine();        获取输入的字符串

String input = sc.nextInt();        获取输入的整数

String input = sc.nextFloat();        获取输入的浮点数

sc.close();

使用循环来读取

while( sc.hasNextInt( ) ){

        int temp = sc.nextInt();

}

sc.close();

6.数组的定义和使用

数组是引用类型,会占据一部分内存。

JVM对内存按照功能进行了不同的划分:

堆(Heap):JVM最大的内存区域,new出来的对象都在堆上。

方法区(Method Area):存储类信息、常量、静态变量,方法编译出的字节码就存在这个区域。

虚拟机栈(JVM Stack):每个方法执行时,都会创建一个栈帧,内部包括局部变量表、操作数表栈、动态链接、返回地址等信息,方法结束即销毁。

本地方法栈(Native Method Stack):与虚拟机栈类似,只不过保存的Native方法的局部变量。

程序计数器(PC Register):保存下一条执行指令的地址

数组拷贝

Arrays.copyOf ( 原数组,新数组长度 );

Arrays.copyOfRange(原数组,开始下标,结束下标);

7.类和对象

定义了一个类,就相当于在计算机中定义了一种新的类型
this 引用指向当前对象 ( 成员方法运行时调用该成员方法的对象 ) ,在成员方法中所有成员变量的操作,都是通过该 引用去访问

为什么局部变量需要初始化,但是成员变量不用呢?

因为在new关键字背后发生了如下过程:

1. 检测对象对应的类是否加载了,如果没有加载则加载
2. 为对象分配内存空间
3. 处理并发安全问题
4. 初始化所分配的空间
5. 设置对象头信息 ( 关于对象内存模型后面会介绍 )
6. 调用构造方法,给对象中各个成员赋值

一般成员变量设置为private,成员方法设置为public

private:同一包中的同一类

public:都可以用

static修饰成员变量

static修饰的成员变量成为静态成员变量,不属于某个具体的类,是所有对象共有的。

1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
3. 类变量存储在方法区当中
4. 生命周期伴随类的一生 ( 即:随类的加载而创建,随类的卸载而销毁 )

static修饰成员方法

static 修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的
1. 不属于某个具体的对象,是类方法
2. 可以通过对象调用,也可以通过类名 . 静态方法名 (...) 方式调用,更推荐使用后者
3. 不能在静态方法中访问任何非静态成员变量
4. 静态方法中不能调用任何非静态方法,因为非静态方法有 this 参数,在静态方法中调用时候无法传递 this 引用

static成员变量初始化

静态成员变量的初始化分为两种:就地初始化 和 静态代码块初始化
就地初始化指的是:在定义时直接给出初始值。
静态代码块初始化指的是:初始化静态成员变量

代码块概念以及分类

  • 普通代码块:定义在方法中的代码块(少用)
  • 构造块 定义在类中的代码块(不加修饰符)。也叫:实例代码块构造代码块一般用于初始化实例成员变量

  • 静态块:使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量。

        1.静态代码块不管生成多少个对象,其只会执行一次
        2.静态成员变量是类的属性,因此是在JVM 加载类时开辟空间并初始化的
        3.如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行( 合并 )
        4.实例代码块只有在创建对象时才会执行
  • 同步代码块(后续讲解多线程部分再谈)

内部类

根据内部类定义的位置不同,一般可以分为以下几种形式:
1. 成员内部类 ( 普通内部类:未被 static 修饰的成员内部类 和 静态内部类:被 static 修饰的成员内部类 )
2. 局部内部类 ( 不谈修饰符 ) 、匿名内部类
public class OutClass {
// 成员位置定义:未被static修饰 --->实例内部类
public class InnerClass1{
}
// 成员位置定义:被static修饰 ---> 静态内部类
static class InnerClass2{
}
public void method(){
// 方法中也可以定义内部类 ---> 局部内部类:几乎不用
class InnerClass5{
}
}
}

03-31
### Java SE 的资料、教程、下载以及文档 #### 什么是 Java SE? Java SE(Standard Edition)是 Java 平台的标准版,提供了构建桌面和服务器应用程序所需的核心功能。它包含了基础类库、虚拟机和其他开发工具。 --- #### 如何获取并安装 Java SE? 要获取并安装 Java SE,可以通过以下步骤实现: 1. **访问官方网站** 访问 Oracle 官方网站 `www.oracle.com`,导航至 Products -> Java 部分[^4]。随后找到 Java Archive 页面以选择所需的版本。 2. **选择合适的版本** 在 Java Archive 中可以选择不同版本的 JDK 或 JRE。例如,JDK 是用于开发的应用程序包,而 JRE 则主要用于运行已编写的 Java 应用程序[^2]。 3. **下载与安装** 下载对应操作系统的安装文件(如 Windows x64 Installer),双击执行安装向导,并按照提示逐步完成安装过程[^5]。 4. **验证安装是否成功** 使用命令行工具输入 `java -version` 来确认安装状态。如果显示具体的版本号,则表明安装无误。 --- #### 常见的 Java SE 学习资源推荐 以下是几个常用的 Java SE 学习资源及其特点: 1. **Oracle 官方文档** - 提供详尽的技术说明和 API 参考手册。 - 地址:[https://docs.oracle.com/javase/](https://docs.oracle.com/javase/) [^3] 2. **在线学习平台** - 推荐 Coursera 和 Udemy 上的相关课程,这些平台上通常有针对初学者到高级用户的全面教学视频。 3. **书籍推荐** - *《Head First Java》*:适合入门者理解基本概念。 - *《Effective Java》*:深入探讨最佳实践和技术细节。 4. **社区支持** - Stack Overflow 和 GitHub 社区都是解决实际编码问题的好地方。 --- #### 示例代码展示 下面是一个简单的 Hello World 程序作为示例: ```java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 此代码展示了如何创建一个最基础的 Java 类,并通过 `main` 方法打印一条消息。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值