JAVA学习记录2——Java基础

10 篇文章 0 订阅
这篇博客详细介绍了Java的基本数据类型,包括自动和强制类型转换,以及与String的转换。此外,还讲解了Java的关系运算符、逻辑运算符和赋值运算符的特性和使用。同时,涉及常用的控制语句如break、continue以及增强for循环的使用。最后,文章阐述了数组的定义、赋值机制和动态添加元素的方法,以及二维数组的使用。
摘要由CSDN通过智能技术生成

一、Java数据类型

1.基本数据类型

在这里插入图片描述

  1. Java基本类型有固定的范围和字段长度,不受操作系统影响,保证了Java程序的可移植性
  2. Java整形常量数值默认int型,声明long型常量在后面加l或L以区分
  3. Java浮点形常量数值默认double型,声明float型常量在后面加f或F以区分float num = 1.1错误。通常情况下使用double
  4. Java浮点型0.xxx中0可省略,表示为.xxx
    123e2表示123的2次方
  5. 浮点数=符号位+指数位+尾数位
    尾数位部分可能丢失,造成精度损失
  6. 浮点数的使用陷阱
double num1 = 2.7
double num2 = 8.1/3;
System.out.println("num1="+num1);
输出不是2.7,是接近2.7的小数
if (num1 == num2)//判断不相等

PS:当我们对运算结果是小数进行相等判断时,应该以两个数的差值的绝对值在某个精度范围内判断

if (Math.abs(num1 - num2)<0.00001) {
	System.out.println(Math.abs(num1 - num2));
}
  1. Java中char2个字节(可存放汉字)
    char本质为一个整数,输出时unicode码对应字符
    存储时’a’ -> 码值97 -> 二进制 -> 存储
    Unicode(兼容ASCII码)字母汉字都2字节,UTF-8字母1字节汉字3字节,GBK字母1字节汉字2字节

  2. Java中的布尔类型boolean只能为true或false,不能为null,也不能像C语言用0或非0整数代替

  3. Java中没有无符号数,都是有符号的

  4. Java中null必须小写

2.引用数据类型

类class
接口interface
数组[ ]

3.基本数据类型转换

1.自动类型转换

进行赋值或运算时,精度小的类型可自动转换为精度大的类型
在这里插入图片描述
注意:
表达式结果类型会自动提生为操作数中最大的类型
byte、short、char三者可以进行计算,计算时会首先转换为int类型

2.强制类型转换

自动类型转换的逆过程(int) n
将精度大的类型转换为精度小的类型
注意精度降低或溢出

3.基本数据类型和String类型的转换

  • 基本数据类型转String
    基本类型值+""
int n = 1;
String str = n + "";
  • String转基本数据类型
    通过基本类型的包装类调用parseXX方法
    PS:要确保String能转换成有效数据
Integer.parseInt("123");//Integer为int的包装类
Boolean.parseBoolean("true");

String转char,就是取字符串的第一个字符

String str = "53";
System.out.println(str.charAt(0));
输出'5'

二、Java运算符

只整理新了解的特点

1.关系运算符:

instanceof
作用:检查是否是类的对象,判断对象的类型是否为XX类型或XX类型的子类

"java" instanceof String;
结果true
String instanceof Object;
结果true

2.逻辑运算符:

&&、||是短路逻辑运算符
&、|既是逻辑运算符,又是位运算符
短路与&&和逻辑与&区别:

  • &&如果第一个条件为false,则第二个条件不会判断,直接判定结果false,效率高
  • &不管第一个条件是否为false,第二个条件都要判断,效率低
  • 开发中,多使用短路与&&,效率高

短路或 || 和逻辑或 |:

  • ||如果第一个条件为true,则第二个条件不会判断,直接判定结果true,效率高
  • |不管第一个条件是否为true,第二个条件都要判断,效率低
  • 开发中,多使用短路或||,效率高

逻辑异或^:不同为true,否则为false

3.赋值运算符

复合赋值运算符( +=、++)会进行类型转换

byte b = 2;
b += 2;  //等价 b = (byte)(b+2)
b++;  // b = (byte)(b+1)

4.位运算符

算数右移:>>低位溢出,符号位不变,并用符号位补溢出的高位(本质是每右移一位/2)
算数左移:<<符号位不变,低位补0(本质是每左移一位*2)
逻辑右移(无符号右移):>>>低位溢出,高位补0

以0b或0B开头可以表示二进制数

5.运算符优先级

从高到低优先级递减
在这里插入图片描述

三、常用语句

1.输入语句

Java中接收用户输入需要一个扫描器(对象)Scanner
步骤:

  1. 导入该类所在的包,java.util
  2. 创建该类对象(声明变量)
  3. 调用里面的功能
import java.util.Scanner;
public class Input {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);  //创建对象
        String name = scanner.next();
        int age = scanner.nextInt(); //nextInt()表示接收int类型,其他类型同理
    }
}

2.获得随机数

🌰

System.out.println((int)(Math.random()*100)+1);
//随机获得1~100的数,即[1,101)
import java.util.Random;
Random r = new Random();
int type = r.nextint(3);
//随机生成0,1,2中的一个整数

3.break、continue

break、continue语句出现在多层嵌套的语句块中时,可通过标签指明要终止哪一层。
标签自己指定名称,实际开发中尽量不要使用

label1:
for (int i = 0;i<4;i++) {
label2:
		for (int j = 0;j<10;j++) {
			if (j == 2){
				break lable1;  //跳出到lable1,跳出外层循环
			}
			System.out.println(j);
		}
}

4.增强for循环

int[] nums = {1,2,3,4};
for (int i : nums) {//从nums数组依次取值赋给i
	System.out.println(i);
}//nums全部取完则退出

四、数组

1.Java中数组的定义与使用

数组的静态初始化:
中括号[ ]写在数组名前或后都可。

double[] score = {10,9,8,7,6};
System.out.println(score.length); //数组长度,数组名.length

数组的动态初始化:
数据类型 数组名[] = new 数据类型[空间大小]

double score[] = new double[5];
a[0] = 10;
a[1] = 9;
……
int[] a[] = new int[2][3];//二维数组

数组属于引用类型,数组型数据是对象(object)

2.数组的赋值机制

1)基本数据类型赋值,这个值就是具体的数据,相互不影响int n1 = 1;;int n2 = 2;
2)数组在默认情况下是引用传递,赋的值是地址

int[] arr1 = {1,2,3};
int[] arr2 = arr1; //相当于让arr2指向arr1地址

改变arr2会影响arr1

数组的拷贝(开辟新的空间)

int[] arr1 = {1,2,3};
int[] arr2 = new int[arr1.length];
for (int i=0;i<arr1.length;i++) {
	arr2[i] = arr1[i];
} 

3.数组的添加

  1. 定义初始数组
  2. 定义一个新数组
  3. 遍历初始数组,将其元素拷贝到新数组
  4. 把要添加的值赋给空余的元素
  5. 让初始数组指向新数组,初始数组的原有空间会被自动销毁

动态添加:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        int[] arr = {1,2,3};

        do {
            int[] arrNew = new int[arr.length + 1];//比原数组多一个空间
            for (int i = 0; i < arr.length; i++) {
                arrNew[i] = arr[i];
            }
            System.out.println("请输入添加的元素:");
            int addNum = myScanner.nextInt();
            arrNew[arrNew.length - 1] = addNum;
            arr = arrNew;
            for (int i = 0;i<arr.length;i++) {
                System.out.print(arr[i]+"\t");
            }

            System.out.println("是否继续添加? y/n");
            char key = myScanner.next().charAt(0);
            if (key == 'n') {
                break;
            }
        }while(true);
    }
}

4.Java中二维数组

1)Java中二维数组的存储形式:
在这里插入图片描述

2)Java中二维数组列数不确定:

int [][] arr = new int [3][]; //创建二维数组,只是确定了一维数组的个数,一维数组为空
for (int i = 0;i<arr.length;i++) {
	arr[i] = new int [i+1]; //给每个一维数组开空间
							//没开辟的则是NULL

	for (int j = 0;j<arr[i].length;j++) {
		arr[i][j] = i + 1; //逐个赋值
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值