java-廖雪峰笔记-入门

java介绍

JDK:Java Development Kit
JRE:Java Runtime Environment

在这里插入图片描述
JRE运行java字节码的虚拟机
JDK包含JRE、编译器、调试器等开发工具

JSR规范:Java Specification Request
JCP组织:Java Community Process

RI:Reference Implementation
TCK:Technology Compatibility Kit

后缀文件:
.java:这个可执行程序其实就是JVM,运行Java程序,就是启动
.JVM,然后让JVM执行指定的编译后的代码;
.javac:这是Java的编译器,它用于把Java源码文件(以.java后缀结尾)编译为Java字节码文件(以.class后缀结尾);
.jar:用于把一组.class文件打包成一个.jar文件,便于发布;
.javadoc:用于从Java源码中自动提取注释并生成文档;
.jdb:Java调试器,用于开发阶段的运行调试。

IDE是集成开发环境:Integrated Development Environment

java语法

class :定义类
public :表示类公开
static :静态

名为main的方法

public static void main(String[] args) {
        ...
    }

此定义为java程序的固定入口(从main开始执行)
其中String[] args参数必须有(规定),为外界传入main方法的参数
若写为其他形式,则为方法重载
在这里插入图片描述
为什么main方法定义在类里面?(C语言中main为主函数在外界)

java源码文件运行过程:

javac
java
HelloWorld.java..
HelloWorld.class..
excute.

在这里插入图片描述为什么只能定义一个public?

Java程序基本结构:

java是面向对象的语言,程序基本单位为class
面向对象基本单位都是class?
类名要求:

  • 类名必须以英文字母开头,后接字母,数字和下划线的组合
  • 习惯以大写字母开头

public表示class公开,不写也能正确编译,但是这个类将无法从命令行执行(什么意思?

定义变量:int x=1;无初始值时默认为0

基本数据类型:

整数类型:byte、short、int、long
浮点数类型:float、double
字符类型:char
布尔类型:boolean

在这里插入图片描述

  • byte:-128 ~ 127
  • short: -32768 ~ 32767
  • int: -2147483648 ~ 2147483647
  • long: -9223372036854775808 ~ 9223372036854775807

浮点型:
float类型,需要加上后缀 f
float类型可最大表示 3.4 3.4 3.4x 1 0 38 10^{38} 1038
double类型可最大表示 1.79 1.79 1.79x 1 0 308 10^{308} 10308

**布尔型:**ture(1)or false(0)
Java语言对布尔类型的存储并没有做规定,理论上存储布尔类型只需要1 bit,但是通常JVM内部会把boolean表示为4字节整数。

**字符类型:**char使用单引号‘’
字符串string为双引号“”

引用类型(类似于c指针)

**常量:**定义变量时加final
final double PI = 3.14;
常量在定义初始化后不可再赋值
(根据习惯,常量名通常全部大写)

var关键字:
类型名太长写起来麻烦

StringBuilder sb = new StringBuilder();

省略变量类型为

var sb = new StringBuilder();

编译器会自动根据赋值语句判断类型

变量作用范围与c语言类似

位运算:
&与 |或 ~非
多位时 按二进制位运算

运算优先级
在Java的计算表达式中,运算优先级从高到低依次是:

  • ()
  • ! ~ ++ --
  • */ %
  • +-
  • << >> >>>
  • &
  • |
  • += -= *= /=

类型自动提升与强制转型(同C语言)

NaN表示Not a Number
Infinity表示无穷大
Infinity表示负无穷大

要显示一个字符的Unicode编码,只需将char类型直接赋值给int类型即可,如:
int n2 = '中'; // 汉字“中”的Unicode编码是20013
可直接用转义字符\u+Unicode编码来表示一个字符,如:
char c4 = '\u4e2d'; // '中',因为十六进制4e2d = 十进制20013

字符串类型:String

null 空值不等于 空字符串“”

关键字new:

定义数组类型:
int[] ns = new int[5];

可用数组变量.length获取数组大小

定义时直接初始化
int[] ns = new int[] { 68, 79, 91, 85, 62 };
简写int[] ns = { 68, 79, 91, 85, 62 };

流程控制

输出:
System.out.println()
(println是print line的缩写)
若不换行可用print
格式化输出:
System.out.printf()通过占位符%?把后面参数 格式化为指定格式

占位符
%d格式化输出整数
%x格式化输出十六进制整数
%f格式化输出浮点数
%e格式化输出科学计数法表示的浮点数
%s格式化字符串

输入:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 创建Scanner对象
        System.out.print("Input your name: "); // 打印提示
        String name = scanner.nextLine(); // 读取一行输入并获取字符串
        System.out.print("Input your age: "); // 打印提示
        int age = scanner.nextInt(); // 读取一行输入并获取整数
        System.out.printf("Hi, %s, you are %d\n", name, age); // 格式化输出
    }
}

Scanner会自动转换数据类型,不必手动转换(???这句的意义在哪?)

判断值类型变量是否相等 用==
==在引用类型中表示引用是否相等(相当于地址)而不是内容
判断内容用***.equals();
如:s1.equals(s2);
(注: 如果变量s1null,会报NullPointerException
要避免,可用:
if(s1 != null && s1.equals(s2));或将可能是null的引用类型放在后面括号内

什么时候需要new
对象实例化的时候——————还不确定

new解释

for each循环,遍历数组:

public class Main {
    public static void main(String[] args) {
        int[] ns = { 1, 4, 9, 16, 25 };
        for (int n : ns) {
            System.out.println(n);
        }
    }
}

循环变量n不是计数器,而是直接对应数组每个元素。(无法指定遍历顺序,也无法获取数组索引)

break语句总是跳出自己所在的那一层循环

数组

Arrays.toString(),可以快速打印数组内容:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] ns = { 1, 1, 2, 3, 5, 8 };
        System.out.println(Arrays.toString(ns));
    }
}

Arrays.sort()排序(从小到大):

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] ns = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };
        Arrays.sort(ns);
        System.out.println(Arrays.toString(ns));
    }
}

要打印一个二维数组,可以使用两层嵌套的for循环:

for (int[] arr : ns) {
    for (int n : arr) {
        System.out.print(n);
        System.out.print(', ');
    }
    System.out.println();
}

Java标准库的Arrays.deepToString()打印多维数组:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[][] ns = {
            { 1, 2, 3, 4 },
            { 5, 6, 7, 8 },
            { 9, 10, 11, 12 }
        };
        System.out.println(Arrays.deepToString(ns));
    }
}

命令行参数:
命令行参数类型是String[]数组;

命令行参数由JVM接收用户输入并传给main方法;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
廖雪峰 Java 教程 Java教程 Java快速入门 Java简介 安装JDK 第一个Java程序 Java代码助手 使用IDE 使用IDE练习插件 Java程序基础 Java程序基本结构 变量和数据类型 整数运算 浮点数运算 布尔运算 字符和字符串 数组类型 流程控制 输入和输出 if判断 switch多重选择 while循环 do while循环 for循环 break和continue 数组操作 遍历数组 数组排序 多维数组 命令行参数 面向对象编程 面向对象基础 方法 构造方法 方法重载 继承 多态 抽象类 接口 静态字段和静态方法 包 作用域 classpath和jar 模块 Java核心类 字符串和编码 StringBuilder StringJoiner 包装类型 JavaBean 枚举类 BigInteger BigDecimal 常用工具类 异常处理 Java的异常 捕获异常 抛出异常 自定义异常 使用断言 使用JDK Logging 使用Commons Logging 使用Log4j 使用SLF4J和Logback 反射 Class类 访问字段 调用方法 调用构造方法 获取继承关系 动态代理 注解 使用注解 定义注解 处理注解 泛型 什么是泛型 使用泛型 编写泛型 擦拭法 extends通配符 super通配符 泛型和反射 集合 Java集合简介 使用List 编写equals方法 使用Map 编写equals和hashCode 使用EnumMap 使用TreeMap 使用Properties 使用Set 使用Queue 使用PriorityQueue 使用Deque 使用Stack 使用Iterator 使用Collections IO File对象 InputStream OutputStream Filter模式 操作Zip 读取classpath资源 序列化 Reader Writer PrintStream和PrintWriter 日期与时间 基本概念 Date和Calendar LocalDateTime ZonedDateTime DateTimeFormatter Instant 最佳实践 单元测试 编写JUnit测试 使用Fixture 异常测试 条件测试 参数化测试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值