JavaSE 笔记【二】Java语言概述、基本语法、数组

视频链接:Java零基础教程

Java语言概述
Java语言特性

特点一:面向对象
特点二:健壮性
特点三:跨平台性

单行注释与多行注释、文档注释

注释了的内容不参与编译
文档注释生成文档:javadoc -d outputPath -author -version javaFileName

基本语法

cmd启动快捷方式:在文件夹地址栏输入cmd可以直接在此路径打开cmd

标识符的命名规范

java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用

变量的分类
  • 基本数据类型
    • 整型:byte(1),shot(2),int(4),long(8)
    • 浮点型:float(4),double(8)
    • 字符型:char(2)char c = '' // 编译报错
    • 布尔型:boolean(boolean类型单独使用占4个字节(int),在数组中占1个字节(byte))
  • 引用数据类型
    • 类:class
    • 接口:interface
    • 数组:array

java中内码(运行内存)中的char使用UTF16的方式编码,一个char占用两个字节,但是某些字符需要两个char来表示。所以,一个字符会占用2个或4个字节。
java中外码中char使用UTF8的方式编码,一个字符占用1~6个字节。
UTF16编码中,英文字符占两个字节;绝大多数汉字(尤其是常用汉字)占用两个字节,个别汉字(在后期加入unicode编码的汉字,一般是极少用到的生僻字)占用四个字节。
UTF8编码中,英文字符占用一个字节;绝大多数汉字占用三个字节,个别汉字占用四个字节。

《Java虚拟机规范》: 虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位

自动类型提升运算

byte、char、short三种类型的变量做运算时,结果为int型
String类型无法强制转化为数值型,可以使用包装类转化

算术运算符

% 取余运算,结果的符号与被模数的符号相同
+=不会改变结果数据类型

int i = 1;
i *= 0.1; // 编译通过,i结果为0
逻辑运算符

&(与)、&&(短路与)
| (或)、||(短路或)

位运算符(整型操作)

<< 左移
>> 右移
>>> 无符号右移(最高位无论是0或者是1,空缺为都补0)
& 与运算
| 或运算
^ 异或运算
~ 取反运算

交换两个变量

// 方式一:定义临时变量
int temp = num1;
num1 = num2;
num2 = temp;

// 方式二:加减法
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;

// 方式三:^运算
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;
使用Scanner从键盘获取数据
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();

String.charAt() 获取指定索引位置的字符

if-else练习

获取一个随机数:10 - 99
公式:[a, b] : (int)(Math.random() * (b - a + 1) + a)

switch-case结构

switch结构中的表达式,只能是如下的6中数据类型之一:byte、short、char、int、枚举类型、String类型
case之后只能声明常量,不能声明范围

for循环结构

for(①;②;③):①、②、③可以是多条语句,使用”,“隔开

break和continue的基本使用

break使用范围 switch-case、循环结构中,结束当次循环,可以加标签
continue使用范围循环结构中,结束当次循环,可以加标签
return结束方法

数组
数组的概念

数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用类型
数组的长度一旦确定,就不能修改

数组声明和初始化

int[] ids; //声明
ids = new int[]{1001, 1002, 1003, 1004}; // 静态初始化,数组的初始化和数组元素的赋值操作同时进行
String[] names = new String[5]; // 动态初始化,数组的初始化和数组元素的赋值操作分开进行
String names[] = new String[5];
// 错误写法
// int[] arr1 = new int[];
// int[5] arr2 = new int[5];
// int[] arr3 = new int[3]{1, 2, 3}; 
// 也是正确的写法
int[] arr4 = {1,2,3,4,5}; // 类型推断
int[][] arr = new int[][]{{1,2,3}, {4,5}, {6,7,8}}; // 静态初始化
String[][] arr2 = new String[3][2]; // 动态初始化1
String[][] arr3 = new String[3][]; // 动态初始化2
// 错误写法
// String[][] arr4 = new String[][4];
// String[4][3] arr5 = new String[][];
// int[][] arr6 = new int[4][3]{{1,2,3}, {4,5}, {6,7,8}};
// 正确
int [][]arr4 = new int[][]{{1,2,3}, {4,5}, {6,7,8}};
int []arr4[] = new int[][]{{1,2,3}, {4,5}, {6,7,8}};
int []arr4[] = {{1,2,3}, {4,5}, {6,7,8}}; // 类型推断

数组元素的初始化值

  • 数组元素是整型:0
  • 数组元素是浮点型:0.0
  • 数组元素是字符型:0或’\u0000’,而非‘0’
  • 数组元素是boolean型:false
  • 数组元素是引用数据类型:null
  • 二维数组的外层元素:外层为地址值,内层与一维数组相同
  • 二维数组只定义一维长度,未定义二维长度,外层为null,内层调用空指针异常

数据结构

  1. 数据与数据之间的逻辑关系:集合、一对一、一对多、多对多
  2. 数据的存储结构
    线性表:顺序表(比如:集合)、链表、栈、队列
    树形结构:二叉树
    图形结构

算法

  1. 排序算法
  2. 搜索算法

数组中涉及的常见算法

  1. 数组元素的赋值(杨辉三角、回形数)
  2. 求数值型数组中元素的最大值、最小值、平均值、总和等
  3. 数组的复制、反转、查找(线性查找、二分法查找)
  4. 数组元素的排序算法

十大内部排序算法

  • 选择排序
    直接选择排序、堆排序
  • 交换排序
    冒泡排序快速排序(速度最快)
  • 插入排序
    直接插入排序、折半插入排序、Shell排序
  • 归并排序
  • 桶式排序
  • 基数排序
// 冒泡排序
for(int i = 0; i < arr.length - 1; i ++) {
  for(int j = 0; j < arr.length - i - 1; j ++) {
    if(arr[j] > arr[j + 1]) {
      int tmp = arr[j];
      arr[j] = arr[j+1];
      arr[j+1] = tmp;
    }
  }
}
Arrays工具类

Arrays.sort(arr); // 底层使用快排算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值