前端初学java一(java术语、JDK下载、字面量、运算符、程序入口、数组、方法、String、StringBuilder、StringJoiner、ArrayList)

目录

java术语

JDK

Javac

Java

Jdb

Jhat

JVM

JRE

JAR

JDK下载

运行java文件

字面量

隐式转换

强制转换

注意

运算符

&&、||、&、|

Switch

 程序入口

 String[] args

数组

静态初始化

动态初始化

变量初始化

Java内存

方法

重载

Final

String

StringBuilder

常用方法

StringJoiner

常用方法

字符串拼接底层原理

ArrayList

常用方法


java术语

JDK

Java Development Kit,是Java开发工具包的意思。它包含了Java开发所需要的各种工具和类库,包括JVM、核心类库、开发工具(java、javac、jdb、jhat)。JDK是Java开发的基础,Java开发者需要安装JDK才能进行Java程序的开发和运行

下面是JDK中开发工具

Javac

Java 编译器的命令行工具用于将Java代码编译成Java字节码。它是 JDK的一部分,可以在命令行中使用。使用 "javac" 命令可以Java源代码文件(.java)编译成 Java 字节码文件(.class,以便在 Java 虚拟机(JVM)上运行。

Java

相当于java的虚拟机,通过java Main命令行可以运行通过javac编译好的Main.class文件。

Jdb

调试工具。

Jhat

内存分析工具。

JVM

java Virtual Machine,Java虚拟机用于运行字节码。

JRE

java runtime environment,java运行环境,用于运行编译好后的java文件,包括JVM,核心类库,运行工具等,去掉了运行工具中的编译器等。

JAR

Java Archive是Java平台上的一种压缩文件格式,它可以包含Java类、资源文件和META-INF目录等内容。通常JAR文件被用作Java程序的打包和分发方式,可以方便地将Java程序打包成一个独立的可执行文件。JAR文件也可以作为Java类库被其他Java程序引用。在Java中,使用jar命令可以创建和解压JAR文件。

JDK下载

Java Downloads | Oracle

下载后文件夹

bin:存放各种工具命令(javac编译器和java虚拟机等)

conf:存放了相关配置文件。

Include:存放了一些平台特定的头文件。

Jmods:存放了各种模块。

Legal:存放各种模块的授权文档

Lib:存放工具的一些补充JAR包。

运行java文件

cmd打开命令窗口,先javac Main.java,然后会出现下图的Main.class文件(该文件为javac编译器编译的产物)。

最后通过java Main即可运行Main.class文件,注意不要加.class

字面量

整数(byte、int、short、long)、小数(float、double)、字符串(String)、字符(char)、布尔(boolean)、空类型

  • byte1个字节,范围是-128127
  • short2个字节,范围是-32,76832,767
  • int4个字节,范围是-2,147,483,6482,147,483,647
  • long8个字节,注意需要在定义的数后加一个大写或小写的L,范围是-9,223,372,036,854,775,8089,223,372,036,854,775,807
  • float4个字节,注意需要在定义的数后加一个大写或小写的F,范围是IEEE 754规定的约-3.4028235E383.4028235E38的浮点数。
  • double8个字节,范围是IEEE 754规定的约-1.7976931348623157E3081.7976931348623157E308的浮点数。
  • char2个字节,范围是065,535,表示Unicode字符。
  • boolean1个字节,表示truefalse

隐式转换

Double>float>long>int>short>byte

1.  取值范围小的和取值范围大的进行计算时,小的会先提升为大的,再进行运算。

  1. 2.  Byte short char三种类型的数据再运算的时候,都会直接先提升为int,然后再进行计算(byte和byte的运算结果也是int)。

3.  字符运算会通过ASCII码表查询到对应的数字再进行运算。

System.out.println('a'+0);//97
System.out.println( 'a'+'a');//194

4. 和字符串的运算都会被转化为字符串。

System.out.println( 'a'+"bc");//"abc"

5. 数组容器在存储数据时会向上有隐式转换,例如int类型的数组可以向下存储byte short类型,double类型的数组可以存储所有数字类型(byte、short、int、long、float),存入时都会转化为数组的类型。

强制转换

byte a = 1;
byte b=2;
int c=a+b;
byte c = (byte)(a+b);

注意

  1. 字符串类型只能用双引号,和js不同(不区分单双引号的)不同,字符只能用单引号,且只能有一个,且字符串为对象不是字面变量
  2. 空类型为null,且不能被System.out.println打印。

运算符

&&、||、&、|

&&、||和js一样存在短路,&、|是不存在短路。

Switch

和js不同可以简写成->,省略break语句,且当后面只有一句时,大括号也可以省略

Switch(number){
       Case 1->{System.out.println(“yes”)}
}
Switch(number){
       case 1: 
        System.out.println(“yes”);
        break;
}

 程序入口

public static void mian为程序入口。

public class Main {
    public static void main(String[] args) {
        System.out.println(args[0]);//打印"abc"
    }
}

 String[] args

命令行调用时候传入的参数,跟nodejs中的process.argv差不多。

在Idea中可以通过下图去设置。

 

数组

和js中的数组不同,没有push、pop、shift、unshift等对数组进行增删改的方法,只能通过索引赋值修改。

静态初始化

静态初始化2种方法

int[] arr1 = new int []{1,2,3};
int[] arr2 = {1,2,3};//可以省略new int[]
int[][] arr3 = new int[][]{{1,2},{3}};//二维数组
int[][] arr3 ={{1,2},{3}};//同样可以省略new int[][]
System.out.println(arr1);//[I@4eec7777

上面直接通过println打印arr1会打印数组的地址值而不是1,2,3.

其中

[:表示是一个数组;

I:表示当前数组里面的元素都是Int类型;

@:表示一个间隔符号(固定格式)。

4eec777:才是数组真正的地址值(十六进制)。

动态初始化

String[] arr1 =new String[50];
int[][] arr2 = new int[2][2];
int[][] arr3 = new int[2][] //当不知道二维数组的长度时,可以不用二维数组的后一位赋值,这样通过arr3[0]={1,2};可以动态赋值不同长度的数组。

像上面arr1,arr2会对数组中的内容进行默认初始化,初始化规律见下面变量初始化。

变量初始化

类中的变量和数组动态创建时会进行默认的初始化。

整数类型(byte、short、int、long):默认初始化值0。

小数类型(float、double):默认初始化值0.0。

字符类型(char):默认初始化值’\u0000’空格。

布尔类型(boolean):默认初始化值false。

引用类型(类、接口、数组、String):默认初始化值null。

Java内存

栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

堆:存储对象或者数组,new来创建的,都存储在堆内存。

方法区:存储可以运行的class文件。

本地方法栈 :JVM在使用操作系统功能的时候使用,和我们开发无关。

寄存器:给CPU使用,和我们开发无关的。

方法

程序运行的最小单元

Public static void method(){}
Public static int method(){}

其中void和int为方法的返回值,void为无返回。

方法之间没有顺序,且不能互相嵌套定义。

重载

和js不同,在同一类下,它允许同样的方法名,通过参数的类型、数量、顺序区分不同的方法(不能通过返回值区分)

Final

修饰方法:最终方法,不能被重写。

修饰类:最终类,不能被继承。

修饰变量:常量,只能被赋值一次,申明时必须赋值。和js中的const一样,修饰引用数据类型的时候不能修改的是地址值。

在java中表现为一个文件夹,导入使用import,路径分隔用点

  1. 在同一个包中的类时(同一个文件夹下的类可以不需要导入,js中是需要导入的),不需要导包(同一个文件夹下也不能定义相同的类名)
  2. 使用java.lang包中的类时,不需要导包
  3. 同时使用两个包中的同名类,需要用全类名。

String

java定义好的一个类,定义在java.lang包中,所以使用的时候不需要导包。

String s1="a";
String s2 = new String();//空串
char[] ch = {'a','b','c'};
String s3 = new String(ch) //"abc"
Byte[] ch2 = {97,98,99};
String s4 = new String(ch2) //"abc"

当使用双引号直接赋值时,系统会检查改字符串在串池(StringTable,堆内存中的一部分)中是否存在,存在则复用,不存在则创建新的

用new创建的话,每次都会创建新的空间

单纯比较字符串内容使用equals方法,s1.equals(s2),需要忽略大小写用equalsIgnoreCase。

Scanner sc = new Scanner(System.in);
String str1 = sc.next();

上面通过键盘录入得到的字符串是new构建的。

访问字符串的长度用length方法(不是属性),访问某一位使用charAt,s.charAt(0)为访问s字符串的第一位。

StringBuilder

字符串容器,用于提升字符串的拼接等操作效率(多个字符串相加过程中会生成多个字符串,而使用StringBuilder则可以避免中间过程)。

常用方法

StringBuilder(str);

Append(str):添加内容str,可以链式使用。

Reverse:反转容器中内容。

Length:返回StringBuilder中内容长度。

toString:返回容器中的内容转换为字符串,底层是通过new String返回的最后的结果。

Capacity:返回容器的容量,即上限,但可以无限添加内容,因为不断扩充容量,初始默认容量为16,当添加的内容大于16会扩容(原来的容量*2+2)34,如果扩容后还是不够则将容量扩充到和实际长度相等。

StringBuilder sb = new StringBuilder("ab");
sb.append("cd");
sb.length();//4
sb.reverse();
sb.toString();//"dcba"

StringJoiner

用指定符号拼接成字符串(JDK8+)。

常用方法

StringJoiner(间隔符号)

StringJoiner(间隔符号,开始符号,结束符号)

Add:添加内容。

Length:返回toString后的总长度。

toString:通过间隔符号把add添加的内容拼接为字符串,并且在开始、结束加上指定的符号。底层是通过new String返回的最后的结果。

StringJoiner sj = new StringJoiner(",","[","]");
sj.add(1);
sj.add(2);
sj.toString();//[1,2]

字符串拼接底层原理

String s1 = "a"+"b"+"c";

上述运算都是字符串没有变量参加,触发字符串的优化机制,在编译的时候就已经得到了最终结果“abc”。

String s =s1+s2+s3;

JDK8以前会通过会通过new StringBuilder计算s1+s2,toString后再和s3相加,也是通过StringBuilder。

JDK8之后会评估字符串大小,通过开辟一个数组相同大小的数组,然后通过StringBuilder将所有的append后再toString。

ArrayList

集合,长度会自动扩容,只能存储引用数据类型。打印对象时不是地址值为内容。

ArrayList<String> list1 = new ArrayList<String>();// 后面的String可以省略为new ArrayList<>()
ArrayList list2 = new ArrayList ();//表示所有的类都可以往里面加入

上面的<String>为泛型用于限定集合中存储数据的类型 。

常用方法

Add:添加内容,返回true。

Remove(int index)根据索引删除,返回删除的内容。

Remove(obj)删除obj内容,如果存在obj会删除,返回true,不存在返回false。

Set(int index,obj)修改index索引的内容为obj。

Get(int index)获取index索引的内容。

Size:返回长度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值