java第一周idea设置数据类型、方法、循环、数组

1. idea的设置

1.1 设置忽略大小写

file–>setting–>Editor–>General–>Code Completion
在这里插入图片描述
在这里插入图片描述

1.2 编码的设置

在这里插入图片描述

1.3 快捷键

在这里插入图片描述

1.4 项目的设置

导入或者git一个项目的时候
file–》Project Structure
在这里插入图片描述
在这里插入图片描述
module的设置,导入项目的时候module没有成功
在这里插入图片描述

1.5 折叠包名

在这里插入图片描述

1.6 分屏显示

在这里插入图片描述

1.7 翻译软件的安装

快捷键 ctrl shift y
在这里插入图片描述

2. 数据类型

分类:
基本数据类型 八种
引用数据类型

数值类型的取值范围

char
在这里插入图片描述
boolean类型就是true和false

2.1 基本数据类型的转换

自动数据类型的转换
在这里插入图片描述
失真的问题
在这里插入图片描述
强制类型的转换
在这里插入图片描述
快捷键 .cast或者alt+enter解决

表达式类型的提升
表达式类型的提升
在这里插入图片描述

3. 键盘录入Scanner

package com.yq.note1;

import java.util.Scanner;

/**
 * @author 3307235355@qq.com
 * @since 2022/06/12 08:15
 */
public class Demo01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
         System.out.print("请输入一个整数:");
        int num = sc.nextInt();
    }
}

注意事项:

当我们需要录入多种数据类型的时候,如果有String的类型,这个时候需要是所有的录入的类型都为nextline(),然后进行类型的转换,示例如下:

package com.yq;

import java.util.Scanner;

public class Test09 {
    public static void main(String[] args) {
        System.out.println("请依次输入一个int类型、一个string类型、一个double类型");
        Scanner sc = new Scanner(System.in);
        String num1 = sc.nextLine();
        int num11 = Integer.parseInt(num1);
        String num2 = sc.nextLine();
        String num3 = sc.nextLine();
        double num33 = Double.parseDouble(num3);
        double sum = num11 + num33;
        System.out.println("int+double的结果为:" + sum);
        String result = num11 + num2 + num33;
        System.out.println(result);
    }
}

4. 循环

语法结构

for(初始化语句 ; 条件判断语句; 循环控制语句) {
// 循环体语句  
}

初始化语句;
while(条件判断语句){
循环体语句;
(循环控制语句)
}



初始化语句;
do{
 循环体语句;
 (循环控制语句)
} while(条件判断语句);

死循环

for(;;){
  // 循环体
}
while(true){
  // 循环体
}

5. 方法总结

方法的实参和形参的区别是什么?
方法重载发生的条件是什么?形参的名字不同能否构成方法的重载?
方法可以没有返回值吗?可以没有返回值类型吗?
方法的返回值类型或者形参类型是double,意味着可以使用什么类型的返回值或实参?(自动类型转换)

1.形参只是占位符,它规定了调用该方法需要传入什么参数。实参才是一个真正的参数。
方法定义时写的参数是形参,方法在调用时写的参数是实参。

2.方法重载的构成就三种形式:
形参数量不同
形参数量相同时,形参的数据类型不同
形参数量和数据类型都相同时,形参的数据类型的顺序不同
特别注意,形参名不同 不构成方法重载。

3.方法可以没有返回值,但必须有返回值类型。用void这个返回值类型描述没有返回值的方法。

4.基本数据类型所有的数值类型都可以传入该方法了。(也就是说除了boolean都可以) 

6. 数组

6.1 基本的概念

什么是全限定类名?它的作用是什么?
(一维)数组的声明方式有几种?分别是什么?应该使用哪种方式?
(一维)数组的初始化方式有几种?分别是什么?
数组的优缺点是什么。

1.全限定类名 = 包名 + 类名,它可以唯一的确定一个类。
2.有两种声明方式: 格式一 数据类型[] 数组名; 格式二 数据类型 数组名[];
 应该使用格式一。
3.数组的初始化也有两种形式: 
静态初始化: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...}; 
动态初始化: 数据类型[] 数组名 = new 数据类型[数组长度]; 
4.数组的优点是随机访问,访问效率高。缺点是一个数组,长度一旦确定,就不可改变。
数组创建后,还能修改它的长度吗?可以修改元素的取值吗?
动态初始化数组并没有指出数组中元素的具体取值,这时数组可用吗?为什么?请指出各种数据类型数组对象中的元素默认值。
(数组)对象中的元素具有默认值,那么引用(局部变量)具有默认值吗?
数组操作中会碰到哪些异常?是什么原因导致的?
数组遍历方式中,普通for循环和增强for循环有什么不同?它们的使用场景是什么样的?

1.数组对象一旦在堆上创建,除非销毁它,不然长度不可以改变。但是元素取值肯定是可以改变的。
2.可以用,数组对象中的元素具有默认初始化,具有默认值。
 堆上对象中的变量具有默认值: 
 整形(byte、short、int、long)默认值为0 
 浮点类型(float、double)默认值为0.0 
 字符类型(char)默认值是'\u0000' 表示编码值为0的字符,一个绝对空字符。 
 布尔类型(boolean)默认值是false 
 引用数据类型默认值是null
3.局部变量没有默认值,必须手动初始化赋值才能够使用。 
4.数组下标越界异常:访问了不合法的下标。 
空指针异常:使用等于null的引用访问/操作对象。 
5.普通for循环遍历的是数组的下标且能够修改数组元素,但是普通for语法比较复杂。
 增强for循环直接遍历数组元素没有下标,且不能修改数组元素,
 但是增强for语法简洁,执行效率高。 有修改元素或者使用下标的需求时,
 必须用普通for 其余场景都优先考虑增强for循环。

6.2 jvm 内存模型

在这里插入图片描述

为了方便简化交流,以后我们统一称呼JVM运行时内存模型为JVM内存模型。
下面详细解释一下各个区域的用途:
JVM栈(以后简称栈,stack):描述的是Java的(普通)方法执行时的所占内存的内存模型。程序运行时调用方法的代价是:方法中有局部变量需要开辟空间存储,方法的执行过程会产生中间变量,方法执行完毕还需要存储返回地址等等。JVM栈正是Java的(普通)方法执行时所占用的内存空间, 局部变量会直接存储在栈帧中。
于是,方法的执行流程,在JVM内存中,就变成下面这样:
每当Java程序执行一个方法,都会在栈上分配一块只属于该方法的内存区域,称之为栈帧
每当Java程序执行一个方法,都会将一个存储该方法信息的栈帧压入栈中,称之为方法进栈
方法进栈的同时局部变量开辟内存空间存储值,局部变量生效。
当方法执行完毕后,该方法的栈帧随之销毁,称之为方法的出栈
方法栈帧被销毁的同时,局部变量也被销毁,局部变量失效。
注:栈中只有处于栈顶的栈帧才会生效,表示正在执行的方法。称之为当前栈帧,当前方法。
堆(heap):堆是JVM内存中最大的一块,new出来的东西(称之为对象或者实例)都在堆上。 所以new关键字的语义就是:在堆上开辟一片空间给相应的对象。而这片空间(对象)是有内存地址的,这个内存地址是留给外界访问用的。
注:引用数据用比较运算符比较的地址就是这个地址,即比较对象的内存地址。
方法区(method area):面向对象详细讲。
本地方法栈:和JVM栈类似,区别是本地方法栈是给本地(native)方法使用的,而不是普通方法。
程序计数器:JVM执行代码解释执行的,即是一行一行执行字节码的,程序计数器用来记录当前执行的行数。
很明显,在JVM内存模型中,相对比较重要的,和程序的执行联系更紧密的是:堆和JVM栈。堆内存用来存储对象,由于Java是面向对象语言,Java面向对象程序中将会有非常多的对象,所以 堆内存主要决定了Java程序的数据如何存储的问题。而JVM栈用来表示方法的执行流程, 它决定了程序如何执行,或者说如何处理数据。
在这里插入图片描述

不管赋值的方式有多少种,对象种元素赋值的第一步永远是——默认初始化,具有默认值。

6.3 可变参数

[修饰符列表] 返回值类型 方法名 (形式参数列表,数据类型... 变量名){
  //方法体
}

可变参数一定是在所有形参的后面。
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
可以使用foreach进行遍历里边的数据 快捷键 iter

package com.yq.note1;

/**
 * @author 3307235355@qq.com
 * @since 2022/06/12 08:22
 */
public class Loop {
    public static void main(String[] args) {
        get(1,3,4,4,4);

    }
    public static void get(int... num){
        for (int i : num) {
            System.out.println(i);
        }
    }
}

6.4 删除数组元素

package homework.day04;

import java.util.Arrays;

/**
 * 对于某个String类型数组,将其中的某个元素全部去掉,得到一个新数组,并统计去掉了几个元素。
 *
 * 举例,对于String数组["abc", "123", "123", "123", "666", "777"] 将其中的元素"123"全部去掉,就得到了新数组["abc","666", "777"],一共去掉了3个元素。
 *
 * @since 21:12
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class RealDeleteElementDemo {
    public static void main(String[] args) {
        String[] oldArr = {"123", "456", "789", "123", "123", "666", "777"};
        // 获取删除元素后新数组的长度
        String target = "123";
        int delNum = getDeleteElementNum(oldArr, target);
        // 创建新数组
        String[] newArr = new String[oldArr.length - delNum];
        deleteElement(oldArr, newArr, target);

        // 遍历查看新数组
        System.out.println(Arrays.toString(newArr));
    }

    //传入两个数组,删除old数组中的target元素,得到一个新数组
    public static void deleteElement(String[] oldArr, String[] newArr, String target) {
        // 新数组的下标
        int newIndex = 0;
        //遍历old数组
        for (int i = 0; i < oldArr.length; i++) {
            // null元素跳过,避免空指针异常
            if (oldArr[i] == null) {
                continue;
            }
            // 找到不是目标元素的元素复制进新数组
            if (!oldArr[i].equals(target)) {
                newArr[newIndex] = oldArr[i];
                //赋值后数组下标+1
                newIndex++;
            }
        }
    }

    //获取一个数组中目标数据的个数
    public static int getDeleteElementNum(String[] oldArr, String target) {
        // 计数器
        int count = 0;
        for (int i = 0; i < oldArr.length; i++) {
            // null元素跳过,避免空指针异常
            if (oldArr[i] == null) {
                continue;
            }
            if (oldArr[i].equals(target)) {
                count++;
            }
        }
        return count;
    }
}

7.判断两个字符串类容是否相同

String str1 = null;
String str2 = null;
// 简单朴素的if判断方法
if (str1 != null) {
    System.out.println(str1.equals(str2));
} else {
    // 既然引用是null了,只有大家都是null才相等
    System.out.println(str1 == str2);
}
// 高端的三目运算符
System.out.println((str1 == null) ? (str1 == str2) : (str1.equals(str2)));
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安有故里y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值