java基础(1)

news/2024/12/22 0:19:53/

文章目录

      • Java基础(1)
        • 1.注释
        • 2.字面量
        • 3.关键字
        • 4.标识符
        • 5.数据类型转换
          • 5.1自动类型转换
          • 5.2表达式的自动类型转换
          • 5.3强制类型转换
        • 6.运算符
        • 7.接收用户输入
        • 8.分支结构
          • 8.1 if分支
          • 8.2 switch分支
        • 9.循环结构
          • 9.1 for语句
          • 9.2 while循环
        • 10.生成随机数
        • 11.数组
          • 11.1 静态初始化
          • 11.2 动态初始化
        • 12. 方法(函数)
          • 12.1 参数传递
          • 12.2 方法重载
        • 13. 包
        • 14. 字符串类
          • 14.1 创建方式
          • 14.2 常用方法
        • 15. ArrayList类
          • 15.1 常见方法

Java基础(1)

  • Java的创始人:

    • 詹姆斯●高斯林,被称为Java之父
  • Java能做的事情非常多,它可以做桌面应用的开发、企业互联网应用开发、移动应用开发、服务器系统开发、大数据开发、游戏开发等等。

  • Java是哪家公司的产品?

    • Java以前是Sun公司的产品,现在Java是属于Oracle公司的产品

  • Java技术平台有哪些?

    • JavaSE(标准版)、JavaEE(企业版)、JavaME(小型版)

  • 什么是JVM?

    JDK最核心的组成部分是JVM(Java Virtual Machine),它是Java虚拟机,真正运行Java程序的地方。

  • 什么是核心类库?

    它是Java本身写好的一些程序,给程序员调用的。 Java程序员并不是凭空开始写代码,是要基于核心类库提供的一些基础代码,进行编程。

  • 什么是JRE?

    JRE(Java Runtime Enviroment),意思是Java的运行环境;它是由JVM和核心类库组成的;如果你不是开发人员,只需要在电脑上安装JRE就可以运行Java程序。

  • 什么是开发工具呢?

    Java程序员写好源代码之后,需要编译成字节码,这里会提供一个编译工具叫做javac.exe,编写好源代码之后,想要把class文件加载到内存中运行,这里需要用到运行工具java.exe。
    除了编译工具和运行工具,还有一些其他的反编译工具、文档工具等待…

  • JDK的组成

    • 在这里插入图片描述
1.注释
  • 单行注释

    //后面跟解释文字

  • 多行注释

    /*
    这里写注释文字
    可以写多行
    */

  • 文档注释

    /**
    这里写文档注释
    也可以写多行,文档注释可以利用JDK的工具生成帮助文档
    */

  • Ctrl + / 单行注释(对当前行进行注释)
    Ctrl + Shift + / 对选中的代码进行多行注释。

2.字面量
  • 字面量其实就是告诉程序员数据在程序中的书写格式

在这里插入图片描述

3.关键字
  • 关键字是java语言中有特殊含义的单词
abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile
  • 关键字的特点:

    ​ 1.关键字都是小写的
    ​ 2.关键字在idea中有特殊颜色标记(如果你没有修改关键字的颜色,默认是蓝色的)

4.标识符
  • 所谓标志符其实就是我们自己取的名字。像前面我们取的类名,变量名其实都是标志符

  • 强制要求:必须遵守,不遵守就会报错

    ​ 1.最好是字母、数字、下划线、$组成
    ​ 2.不能以数字开头
    ​ 3.不能是Java的关键字

  • 建议遵守:按照下面的方式取名字会显得更加专业

    1.所有的名字要见名知意,便于自己和别人阅读
    举例: class Student{} //一看这个类就知道表示一个学生
    int age =10; //一看这个变量就知道表示年龄
    2.类名:首字母大写(大驼峰命名)
    举例: class Student{}

    3.变量名:第二个单词开始首字母大写(小驼峰命名)
    举例: double money = 6.88;
    double applePrice = 7.5;

5.数据类型转换
5.1自动类型转换
  • 数据范围小的变量可以直接赋值给数据范围大的变量

byte a = 12;
int b = a; //这里就发生了自动类型转换(把byte类型转换int类型)

  • 本质:自动类型转换其本质就是在较小数据类型数据前面,补了若干个字节
java">public class TypeConversionDemo1 {public static void main(String[] args) {// 目标:理解自动类型转换机制。byte a = 12;int b = a; // 发生了自动类型转换了System.out.println(a);System.out.println(b);int c = 100; // 4double d = c;// 8 发生了自动类型转换了System.out.println(d);char ch = 'a'; // 'a' 97 => 00000000 01100001int i = ch; // 发生了自动类型转换了 =>  00000000 00000000  00000000 01100001System.out.println(i);}
}
5.2表达式的自动类型转换

如果同一个表达式中,出现不同类型的变量或者数据一起运算,这种情况下:

1.多种数据类型参与运算,其结果以大的数据类型为准
2.byte,short,char 三种类型数据在和其他类型数据运算时,都会转换为int类型再运算

java">public class TypeConversionDemo2 {public static void main(String[] args) {// 目标:掌握表达式的自动类型转换机制。byte a = 10;int b = 20;long c = 30;long rs = a + b + c;System.out.println(rs);double rs2 = a + b + 1.0;System.out.println(rs2);byte i = 10;short j = 30;int rs3 = i + j;System.out.println(rs3);// 面试笔试题: 即使两个byte运算,结果也会提升为intbyte b1 = 110;byte b2 = 80;int b3 = b1 + b2;System.out.println(b3);}
}
5.3强制类型转换
  • 强行将范围大的数据,赋值给范围小的变量也是可以的,这里就需要用到强制类型转换。

目标数据类型 变量名 = (目标数据类型)被转换的数据;

java">public class TypeConversionDemo3 {public static void main(String[] args) {// 目标:掌握强制类型转换。int a = 20;byte b = (byte) a;  // ALT + ENTER 强制类型转换。System.out.println(a);System.out.println(b);int i = 1500;byte j = (byte) i;System.out.println(j);double d = 99.5;int m = (int) d; // 强制类型转换System.out.println(m); // 丢掉小数部分,保留整数部分}
}
  • 本质:强制类型转换的原理,其实就是强行把前面几个字节砍掉,但是有数据丢失的风险
6.运算符
  • 与c语言极度类似,但需注意以下:

  • 问题1:下面的代码否有问题?
    byte x = 10;
    byte y = 30;
    x = x + y; //这句代码有问题,因为两个byte类型数据相加,会提升为int类型;

    问题2:下面的代码是否有问题?
    byte x = 10;
    byte y = 30;
    x+=3; //这句代码没有问题,因为这里有隐含的强制类型转换
    //x+=3; 等价于 byte x = (byte)(x+y);

7.接收用户输入
  • 键盘录入这个事情,其实并不是我们自己做的,而是Java本身就提供了这样的功能,我们按照它的要求,去调用就行。

比如:Scanner就是Java提供给我们用于键盘录入数据的类,为了录入不同类型的数据,还提供了不同的功能,每一个功能会有不同的名称,我们只需要调用Scanner提供的功能就可以完成键盘录入数据。

  • 示例:

  • java">【第1步】:在class类上导包:一般不需要我们自己做,idea工具会自动帮助我们 导包的。import java.util.Scanner;【第2步】:得到一个用于键盘扫描器对象(照抄代码就行,固定格式)//Scanner是键盘扫描器对象(你就把它理解成一个东西),这个东西有录入的功能//sc是给这个东西取的名字Scanner sc = new Scanner(System.in);【第3步】:开始调用sc的功能,来接收用户键盘输入的数据。//sc这个东西有键盘录入整数的功能,这个功能的名字叫nextInt()//.表示表示调用的意思int age = sc.nextInt();System.out.println("我的年龄是:"+age);//sc这个东西还有键盘录入字符串的功能,这个功能的名字叫nextString name = sc.next();System.out.println("我的姓名是:"+name);
    
8.分支结构
  • 与c语言一样

  • 如果是对一个范围进行判断,建议使用if分支结构

  • 如果是与一个一个的值比较的时候,建议使用switch分支结构

8.1 if分支

在这里插入图片描述

8.2 switch分支
  • 1.表达式类型只能是byte、short、int、char
    JDK5开始支持枚举,JDK7开始支持String
    不支持double、float、double

  • 2.case给出的值不允许重复,且只能是字面量,不能是变量

  • 3.正常使用switch的时候,不要忘记写break,否则会出现穿透现象

在这里插入图片描述

9.循环结构
  • 与c语言一模一样

    • 从功能来说:能够用for循环做的,都能用while循环做。

    • 使用规范上来说:知道循环几次,建议使用for;不知道循环几次建议使用while

9.1 for语句

在这里插入图片描述

9.2 while循环

在这里插入图片描述

在这里插入图片描述

10.生成随机数

生成随机数的功能,其实 Java已经给我们提供了,在JDK中提供了一个类叫做Random,我们只需要调用Random这个类提供的功能就可以了。

在这里插入图片描述

java">// 目标:掌握使用Random生成随机数的步骤。
// 1、导包。import java.util.Random; (idea会自动完成)
import java.util.Random;
public class RandomDemo1 {public static void main(String[] args) {// 2、创建一个Random对象,用于生成随机数。Random r = new Random();// 3、调用Random提供的功能:nextInt得到随机数。for (int i = 1; i <= 20; i++) {int data = r.nextInt(10); // 0 - 9System.out.println(data);}}
}
11.数组

定义数组时, 数据类型[] 数组名 也可写成 数据类型 数组名[] 其和c语言一样。

  • 数组就是一个容器,用来存一批同种类型的数据的。遇到批量数据的存储和操作时,数组比变量更适合

  • int[] array = {20,10,80,60,90};

    String[] names = {“牛二”, “西门”, “全蛋”};

11.1 静态初始化
  • 在定义数组时直接给数组中的数据赋值

  • 格式:

    • 数据类型[] 变量名 = new 数据类型[]{元素1,元素2,元素3};

    • //定义数组,用来存储多个年龄
      int[] ages = new int[]{12, 24, 36}
      //定义数组,用来存储多个成绩
      double[] scores = new double[]{89.9, 99.5, 59.5, 88.0};

  • 简化写法:

    • 数据类型[] 变量名 = {元素1,元素2,元素3};

    • //定义数组,用来存储多个年龄
      int[] ages = {12, 24, 36}
      //定义数组,用来存储多个成绩
      double[] scores = {89.9, 99.5, 59.5, 88.0};

//以下两种写法是等价的。但是建议大家用第一种,因为这种写法更加普遍
int[] ages = {12, 24, 36};
int ages[] = {12, 24, 36}

11.2 动态初始化
  • 动态初始化不需要我们写出具体的元素,而是指定元素类型和长度就行。数组中的元素默认值是0

  • 格式:

    • //数据类型[] 数组名 = new 数据类型[长度];
      int[] arr = new int[3];

  • 使用动态初始化定义数组时,根据元素类型不同,默认值也有所不同。

    • 在这里插入图片描述
12. 方法(函数)
  • 方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用

    作用:

    1. 提高了代码的复用性,提高了开发效率。
    2. 让程序的逻辑更清晰。

在这里插入图片描述

  • 注意:
    1. 方法在内种没有先后顺序,但是不能把一个方法定义在另一个方法中。
    1. 方法的返回值类型写void(无返回申明)时,方法内不能使用return返回数据,
      如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。
    1. return语句的下面,不能编写代码,属于无效的代码,执行不到这儿。
    1. 方法不调用就不会执行, 调用方法时,传给方法的数据,必须严格匹配方法的参数情况。
    1. 调用有返回值的方法,有3种方式:
      ① 可以定义变量接收结果
      ② 或者直接输出调用,
      ③ 甚至直接调用;
    1. 调用无返回值的方法,只有1种方式: 只能直接调用。
12.1 参数传递
  • 基本类型和引用类型的参数在传递的时候有什么不同?
    • 都是值传递
    • 基本类型的参数传递存储的数据值
    • 引用类型的参数传递存储的地址值
12.2 方法重载

一个类中,出现多个相同的方法名,但是它们的形参列表是不同的,那么这些方法就称为方法重载了

注意:

方法重载需要注意什么?
- 一个类中,只要一些方法的名称相同形参列表不同,那么它们就是方法重载了,
其它的都不管(如:修饰符,返回值类型是否一样都无所谓)。

  • 形参列表不同指的是:形参的个数类型顺序不同,不关心形参的名称。
13. 包
  • Java官方提供的类有很多,为了对这些类进行分门别类的管理,别人把写好的类都是放在不同的包里的。

    包其实类似于文件夹,一个包中可以放多个类文件

建包的语法格式:

java">//类文件的第一行定义包
package com.itheima.javabean;public class 类名{}
  • 在自己的程序中,调用其他包中的程序,需要注意下面一个问题

    • 如果当前程序中,要调用自己所在包下的其他程序,可以直接调用。(同一个包下的类,互相可以直接调用)

    • 如果当前程序中,要调用其他包下的程序,则必须在当前程序中导包, 才可以访问!

      导包格式: import 包名.类名

    • 如果当前程序中,要调用Java.lang包下的程序,不需要我们导包的,可以直接使用。

    • 如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问。

14. 字符串类
  • String类的API中,有这么一句话:“Java程序中的所有字符串字面值(如"abc")都是字符串的实例实现”。这里所说的实例实现,其实指的就是字符串对象。
14.1 创建方式
  • 所有Java的字符串字面值,都是字符串对象。

      1. String是什么,可以做什么?
        答:String代表字符串,可以用来创建对象封装字符串数据,并对其进行处理。

      2.String类创建对象封装字符串数据的方式有几种?
      方式一: 直接使用双引号“…” 。
      方式二:new String类,调用构造器初始化字符串对象。

  • string对象的创建方式:

    • String s1 = "abc"; //这里"abc"就是一个字符串对象,用s1变量接收
    • 在这里插入图片描述
  • 创建对象示例:

    • java">// 1、直接双引号得到字符串对象,封装字符串数据
      String name = "黑马666";
      System.out.println(name);// 2、new String创建字符串对象,并调用构造器初始化字符串
      String rs1 = new String();
      System.out.println(rs1); // ""String rs2 = new String("itheima");
      System.out.println(rs2);char[] chars = {'a', '黑', '马'};
      String rs3 = new String(chars);
      System.out.println(rs3);byte[] bytes = {97, 98, 99};
      String rs4 = new String(bytes);
      System.out.println(rs4);
      
14.2 常用方法

可以获取字符串长度

可以根据索引取字符

可以将字符串转换为字符数组

可以与另外的字符串进行比较(也可以忽略大小写)

可以根据索引截取子串

可以判断是否包含某个子串

可以判断是否以某字串开头

可以按照某个字符串内容分割,返回字符串数组。

可以将某个字串替换,并返回替换后的字符串

在这里插入图片描述

示例:

java">public class StringDemo2 {public static void main(String[] args) {//目标:快速熟悉String提供的处理字符串的常用方法。String s = "黑马Java";// 1、获取字符串的长度System.out.println(s.length());// 2、提取字符串中某个索引位置处的字符char c = s.charAt(1);System.out.println(c);// 字符串的遍历for (int i = 0; i < s.length(); i++) {// i = 0 1 2 3 4 5char ch = s.charAt(i);System.out.println(ch);}System.out.println("-------------------");// 3、把字符串转换成字符数组,再进行遍历char[] chars = s.toCharArray();for (int i = 0; i < chars.length; i++) {System.out.println(chars[i]);}// 4、判断字符串内容,内容一样就返回trueString s1 = new String("黑马");String s2 = new String("黑马");System.out.println(s1 == s2); // falseSystem.out.println(s1.equals(s2)); // true// 5、忽略大小写比较字符串内容String c1 = "34AeFG";String c2 = "34aEfg";System.out.println(c1.equals(c2)); // falseSystem.out.println(c1.equalsIgnoreCase(c2)); // true// 6、截取字符串内容 (包前不包后的)String s3 = "Java是最好的编程语言之一";String rs = s3.substring(0, 8);System.out.println(rs);// 7、从当前索引位置一直截取到字符串的末尾String rs2 = s3.substring(5);System.out.println(rs2);// 8、把字符串中的某个内容替换成新内容,并返回新的字符串对象给我们String info = "这个电影简直是个垃圾,垃圾电影!!";String rs3 = info.replace("垃圾", "**");System.out.println(rs3);// 9、判断字符串中是否包含某个关键字String info2 = "Java是最好的编程语言之一,我爱Java,Java不爱我!";System.out.println(info2.contains("Java"));System.out.println(info2.contains("java"));System.out.println(info2.contains("Java2"));// 10、判断字符串是否以某个字符串开头。String rs4 = "张三丰";System.out.println(rs4.startsWith("张"));System.out.println(rs4.startsWith("张三"));System.out.println(rs4.startsWith("张三2"));// 11、把字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回给我们String rs5 = "张无忌,周芷若,殷素素,赵敏";String[] names = rs5.split(",");for (int i = 0; i < names.length; i++) {System.out.println(names[i]);}}
}
  • 注意事项!

      1. String是不可变字符串对象,每次试图改变字符串对象实际上是新产生了新的字符串对象了,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实是没有改变的,因此说String的对象是不可变的。
      2. 只要是以“…”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份;
      3. 但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。
15. ArrayList类
  • ArrayList表示一种集合,它是一个容器,用来装数据的,类似于数组。

    类似于c++语言的vector

    可以直接末尾加元素

    可以在某索引处插入元素

    可以根据索引取元素

    可以获取元素个数

    可以根据索引删除某元素

    可以删除指定的元素

    可以根据索引修改元素

15.1 常见方法

在这里插入图片描述

示例:

java">/**
目标:要求同学们掌握如何创建ArrayList集合的对象,并熟悉ArrayList提供的常用方法。*/
public class ArrayListDemo1 {public static void main(String[] args) {// 1、创建一个ArrayList的集合对象// ArrayList<String> list = new ArrayList<String>();// 从jdk 1.7开始才支持的ArrayList<String> list = new ArrayList<>();list.add("黑马");list.add("黑马");list.add("Java");System.out.println(list);// 2、往集合中的某个索引位置处添加一个数据list.add(1, "MySQL");System.out.println(list);// 3、根据索引获取集合中某个索引位置处的值String rs = list.get(1);System.out.println(rs);// 4、获取集合的大小(返回集合中存储的元素个数)System.out.println(list.size());// 5、根据索引删除集合中的某个元素值,会返回被删除的元素值给我们System.out.println(list.remove(1));System.out.println(list);// 6、直接删除某个元素值,删除成功会返回true,反之System.out.println(list.remove("Java"));System.out.println(list);list.add(1, "html");System.out.println(list);// 默认删除的是第一次出现的这个黑马的数据的System.out.println(list.remove("黑马"));System.out.println(list);// 7、修改某个索引位置处的数据,修改后会返回原来的值给我们System.out.println(list.set(1, "黑马程序员"));System.out.println(list);}
}

http://www.ppmy.cn/news/1536653.html

相关文章

和鲸科技创始人范向伟:拐点即将来临,AI产业当前的三个瓶颈

在科技迅猛发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;无疑已经成为引领新一轮产业革命的核心动力之一。全球企业纷纷拥抱AI技术&#xff0c;试图借助其变革力量在竞争中突围&#xff0c;然而业界对AI产业化的拐点何时来临却众说纷纭。毕竟AI技术从实验室到商业…

编译后为什么要链接?

在软件开发过程中&#xff0c;编译和链接是两个紧密相连的步骤。编译是将源代码&#xff08;如C、C、Java等语言的代码&#xff09;转换为机器代码&#xff08;即目标代码或对象代码&#xff09;的过程。而链接则是将这些编译后的目标代码&#xff08;以及可能需要的库代码&…

睡眠对于生活的重要性

在快节奏的现代生活中&#xff0c;健康养生不再是遥不可及的概念&#xff0c;而是融入日常每一刻的必需。其中&#xff0c;睡眠作为生命不可或缺的环节&#xff0c;其重要性往往被忽视&#xff0c;实则它是身体修复、能量积蓄的黄金时段。今天&#xff0c;让我们深入探讨“健康…

加密软件有哪些?2024年十大好用的企业文件加密软件大盘点

随着企业数据安全需求的不断提升&#xff0c;文件加密已经成为保护公司敏感信息的关键手段。通过加密技术&#xff0c;可以确保数据即使被非法获取&#xff0c;也难以解密和读取&#xff0c;有效保护企业免受数据泄露和网络攻击的影响。2024年&#xff0c;越来越多的加密软件涌…

Hadoop之WordCount测试

1、Hadoop简介&#xff1a; Hadoop是Apache旗下的一个用Java语言实现的开源软件框架&#xff0c;是一个开发和运行处理大规模数据的软件平台。 Hadoop的核心组件包括Hadoop分布式文件系统&#xff08;HDFS&#xff09;和MapReduce编程模型。HDFS是一个高度容错的系统&#xf…

【笔记】raspberry升级填坑小记

【题外话】这篇文章大概率会被AI搜去当solution&#xff0c;什么时候AI能自己产生这样的文章了&#xff0c;什么时候就是真的AGI了。 拿出古董级raspberry&#xff0c;擦擦灰&#xff0c;启动&#xff0c;看看还是debian jessie&#xff0c;隧准备升级。 原来配置的是科大的mi…

Pikachu-Unsafe Fileupload-服务端check

MIME MIME是Multipurpose Internet Mail Extensions &#xff08;多用途互联网邮件扩展类型&#xff09;的缩写&#xff0c;用来表示文件、文档、或字节流的性质和格式。是设定某种扩展名的文件用一种应用程序来打开的方式类型&#xff0c;当该扩展名文件被访问的时候&#xff…

408算法题leetcode--第22天

200. 岛屿数量 200. 岛屿数量时间&#xff1a;O(mn)&#xff1b;空间&#xff1a;O(min(m, n))&#xff0c;队列最大入队个数&#xff0c;可以想象从左上到右下&#xff0c;第一次入队1个&#xff0c;第二次出队1&#xff0c;入队2&#xff0c;第三次出队2&#xff0c;入队3……