JavaSE基础知识

文章目录

  • JavaSE基础知识
    • 一.Java的语法基础
      • 1.标识符
      • 2.关键字
      • 3.数据类型
        • (1)整型
        • (2)浮点型
        • (3)字符型
        • (4)布尔型
      • 4.变量
      • 5.常量
      • 6.运算符
        • (1)赋值运算符
        • (2)算术运算符
        • (3)比较运算符
        • (4)逻辑运算符
        • (5)单目运算
        • (6)三目运算
        • (7)连接运算符
        • (8)调用符
      • 7.数据类型转换
      • 8.强制类型转换
      • 9.流程分支
        • if
        • switch
      • 10.循环语句
        • for循环
        • 跳出循环
        • 双层循环
        • 多层循环的跳出
      • 11.数组
        • (1)如何定义数组?
        • (2)下标
        • (3)数组的长度
        • (4)遍历数组
        • (5)数组的冒泡排序
        • (6)数组下标越界的情况
        • (7)数组初始值的问题
        • (8)数组容量的问题
          • ----数组的扩容
          • ----数组的缩容
        • 二维数组
      • 12.函数
        • 函数分类

一.Java的语法基础

1.标识符

只要在Java中能够起名字的,都叫标识符。
标识符的规则:

  1. 由数字, 字母, 下划线, $ 符号组成
  2. 不能以数字开头
  3. 不能有空格
  4. 驼峰命名法
  5. 见名知意: name userAge

2.关键字

Java已经用过的名字, 这些名字,自己写代码的时候不能使用。
不用死记硬背。

3.数据类型

 Java的数据类型:基本数据类型:数值型:整型: byte, short, int , long(1, 100, 256)浮点型: float, double(3.14, 0.0001)字符型:char ( 'J','a', '成')布尔型:boolean (true, false)引用数据类型:类: (String, String str = "abcd";)接口: (List)数组: (Array)

(1)整型

 Java中默认的整型是int.

(2)浮点型

 Java中默认的浮点型是double.

(3)字符型

 Java中字符型只能用单引号来包裹: '国','信'Java中的字符占用两个字节。Java中的字符可以表示特殊字符: 换行符('\n'), 制表符('\t')

(4)布尔型

 布尔型在Java中只有两个值: true, falsetrue 表示 真 =》 正确false 表示 假 =》 错误

4.变量

 变量: 可变的量变量的三要素:数据类型 变量名 变量值

5.常量

 一旦申明就不能改变。好处: 一处修改,多处修改, 主要是方便维护代码。注意关键字: final变量名的规范: 所有的字母必须大写, 单词与单词之间用下划线连接。
// 常量
// 常量的命名规范: 所有的字母必须大写, 单词与单词之间用下划线连接
// 常量值一旦申明就不能改变了。
final int NUM = 10;
final int USER_COUNT = 10;
// 常量的好处: 一处修改, 多处修改
System.out.println(NUM);
System.out.println(USER_COUNT);
final int NUM = 20;
final int USER_COUNT = 30;
System.out.println(NUM);
System.out.println(USER_COUNT);

6.运算符

(1)赋值运算符

 =, 最主要的作用就是给变量赋值
int num = 10;

(2)算术运算符

 主要是+,-,*,/, %%: 取模(取余数)
// %
int num = 9%2;
System.out.println(num);

(3)比较运算符

 主要包含: >, >=, == , <, <=, !=比较运算符最终计算的结果是: boolean
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int num1 = scanner.nextInt();
System.out.println("请输入第二个数字:");
int num2 = scanner.nextInt();
System.out.println("请选择操作: 1 : +, 2 : -, 3 : *, 4 : /");
int choose = scanner.nextInt();if (choose == 1) { // 加法运算 System.out.println(num1+num2); }else if (choose == 2) { System.out.println(num1-num2); }else if (choose == 3) { System.out.println(num1*num2); }else if (choose == 4) { System.out.println(num1/num2);}

(4)逻辑运算符

 主要包含: && || !逻辑运算符主要运算条件表达式.&& : 必须都为true => true||: 只要一个为true => true! : ! true => false, ! false => true
public static void main(String[] args) {Scanner scanner = new Scanner(System.in); System.out.println("你有多少钱?");int money = scanner.nextInt(); System.out.println("请输入是否下雨?"); String isRain = scanner.next(); if (money >= 10 && "否".equals(isRain)) { System.out.println("可以买好吃的!!"); }else {System.out.println("等一下!!"); } }

(5)单目运算

 ++, --++: 表示自增1--: 自减一
public static void main(String[] args) { int num = 10;num++;// num = num + 1; num += 1; num--;// num = num -1; num -= 1; System.out.println(num); }
 前置和后置的区别: 程序是从左到右执行
// 前置和后置的区别
int num = 100;
int num1 = ++num;// 101
int num2 = num++;// 100

(6)三目运算

 条件表达式 ? 值1 : 值2;条件表达式 -》 true -> 值1条件表达之-》false -> 值2
public static void main(String[] args) { // 三目运算 int a = 10; int b = 20; a = a > b ? a : b; // 用if写 if(a > b) { a = a; }else { a = b; }}

(7)连接运算符

 +加号的两边有任意一边是字符串, 这个时候就是连接运算。

(8)调用符

 .对象调用属性对象调用方法

7.数据类型转换

8.强制类型转换

 类型1 变量名 = (类型1)类型2

强转会造成一个问题: 精度的损失。
注意:
boolean不能和其他任意类型的值进行转换。

int i=1,j = 0;float f1=0.1f; float f2=123; double d1=2020,d2=124; byte b1=1,b2=2,b3=120;j=j+10; i=i/10;i=(int) (i*0.1); char c1='a',c2=125; // byte, short 在运算的时候自动转换成int byte b=(byte) (b1-b2); float f3=f1+f2; float f4=(float) (f1+f2*0.1); double d=d1*i+j; float f=(float)(d1*5+d2);

9.流程分支

if

分支语句: 将代码分成不同的部分, 条件不同执行的代码就不一样。
分支的种类:
     单分支

// Java中分支语句规范
// 分支体里面无论是一行代码还是多行代码,都将{}写出来
if(条件表达式){// 分支体语句 }

双分支

// 满足条件进入分支1 不满足进入分支2
if(条件表达式){
// 分支1
}else{// 分支2
}

多分支

// 满足哪个条件表达式 就进入哪个分支
// 最终只会进入一个分支
if(条件表达式1){
// 分支1
}else if(条件表达式2){
// 分支2
}else if(条件表达式3){// 分支3 }else if(条件表达式n){ // 分支n }else{// 分支n+1 }
/** * 2.输入a ,b,c 三个个位数(0-9)之间,组成一个最大的三位数 */System.out.println("请输入第一个数:"); int num1 = scanner.nextInt(); System.out.println("请输入第二个数:");int num2 = scanner.nextInt(); System.out.println("请输入第三个数:");int num3 = scanner.nextInt();if (num1 < 0 || num1 > 9 || num2 < 0 || num2 > 9 || num3 < 0 || num3 > 9) { System.out.println("输入的数字满足条件!"); }else { // 交换的思想 // 最终的效果: num1 最大, num2 次之 num3 最小 int temp; if (num1 < num2) { temp = num1; num1 = num2; num2 = temp; }if (num1 < num3) {temp = num1; num1 = num3;num3 = temp; }if (num2 < num3){ temp = num2; num2 = num3;num3 = temp; }System.out.println("三个数字组成的最大数:"+num1+num2+num3);
}

switch

 是优雅版的if...else....语法有差距, 最终效果一致。根据实际的情况选择使用即可。
// 比较值 是不能相同的。
// 比较值的数据类型: 字符, 字节, 短整型, 整型, 字符串。// break必须得加上。 switch(值){ case 比较值1 :// 逻辑 break;case 比较值2 : // 逻辑 break; case 比较值n : // 逻辑 break; default: // 默认情况 break; }
/** * 利用switch来完成
* 完成一个简单的计算器程序。程序要求如下:
* 1. 读入两个整数
* 2. 提示用户选择对这两个整数的操作,即输出
*  1 : +
* 2 : -
* 3 : *
* 4 : /
* */Scanner scanner = new Scanner(System.in); System.out.println("请输入第一个数字:"); int num1 = scanner.nextInt(); System.out.println("请输入第二个数字:");int num2 = scanner.nextInt();System.out.println("请选择操作: 1 : +, 2 : -, 3 : *, 4 : /");int choose = scanner.nextInt(); switch(choose) { case 1: // 逻辑代码 System.out.println(num1+num2); break;case 2: // 逻辑代码 System.out.println(num1-num2); break;case 3: // 逻辑代码 System.out.println(num1*num2); break;case 4:// 逻辑代码 if (num2 == 0) { System.out.println("0不能作为除数!"); }else { System.out.println(num1/num2); }break;default: System.out.println("运算符错误!"); break; }

10.循环语句

 while循环
// 1. 先判断条件表达式计算的结果
// 2. 如果为true=>执行循环体
// 3. 如果为false=> 结束循环
// 属于先验循环while(条件表达式){ // 循环体 }// 做一个小小的练习 // 输出1~100之间的奇数 int num = 1;while (num <= 5) { // 判断是否是奇数 if (num%2 != 0) { System.out.println(num); }num++; }

do…while循环

// 是一个后验循环: 先执行循环体,再判断条件
// 1. 先执行循环体
// 2. 判断条件, true=> 继续执行循环体, false =>结束循环do{// 循环体 }while(条件表达式); do {System.out.println("后验循环"); }while(false);

for循环

 for循环是用的最多的,也是最复杂的
for(初始值的申明;条件的判断;迭代){//循环体
}
//for循环执行的步骤
//1.执行初始化
//2.执行条件判断
//3.循环体
//4.迭代
//5.执行条件判断
//.....重复步骤,直到条件不满足,结束循环//计算1累加到100
for(int i=1;i<=100;i++){sum+=i;
}
System.out.println(sum);/*:3、有一分数序列: 2/1, 3/2, 5/3, 8/5, 13/8, 21/13.求出这个数列的前20项之和。*/
public class Demo1 {public static void main(String[] args) {double a1=1;double a2=2;double temp;double sum=0;for(int i=1;i<=20;i++) {sum+=a2/a1;temp=a2;a2=a2+a1;a1=temp;}System.out.println(sum);}
}

跳出循环

跳出循环有两种方式:
break : 直接结束(跳出)循环。
continue: 结束当次循环, 继续下一次循环。

/**
* 1、打印0-50以内所有能被7整除的数(使用continue)
* */
* for (int i = 0; i <= 50; i++) {
*   if (i%7 != 0) {
*       continue;
*   }
*   System.out.println(i);
* }
/**
* 2、打印0-50以内前5个能被7整除的数(使用break)
* */
int count = 0;
for (int i = 0; i <= 50; i++) { if (i%7 == 0) { System.out.println(i); // 把次数+1           count++; }if (count == 5) { break; }
}

双层循环

 双层循环: 循环里面嵌套循环。
// 语法for(int i=0; i<=n; i++){ // 循环体 for(int j=0; j<=m; j++){ // 循环体 } }// 打印出99乘法表 // 双层循环 // 打印99乘法表 // 有行和列 // 外层循环: 循环行=》9 外层循环的范围 1~9 // 内存循环: 循环列=》 列数和行数相等 // 什么时候换行: 内层循环完了之后换行for (int i = 1; i <= 9; i++) {// 循环行 for (int j = 1; j <= i; j++) { System.out.print(j+"×"+i+"="+(i*j)+"\t");}// 换行 System.out.println(""); }
/** (循环)*读入一个整数n,输出如下图形 n = 3 **** ***** n = 4**** ***** ******* 思路:输入的数字就是行数 列数:2*n-1 */ int n = 5; for (int i = 1; i <= n; i++) {// 行 for (int j = 1; j <= n-i; j++) {// 输出空格 System.out.print(" "); }for (int j = 1; j <= 2*i-1; j++) {// 输出* System.out.print("*"); }// 换行 System.out.println(""); }

多层循环的跳出

 关键字都是一样的: break, continue;直接break, continue => 只能退出一层循环多层循环的退出 需要一个标记这个标记自定义。
flag:for(int i=0; i<=n; i++){ // 循环体 for(int j=0; j<=m; j++){ // 循环体 break flag; }
}// 多层循环的退出
flag:for (int i = 0; i < 10; i++) {for (int j = 0; j < 10; j++) { System.out.print("*");if (j == 5) {break flag; } }System.out.println("");
}

11.数组

 数组是所有语言中**最为重要的结构**现在我们的程序需要将班级所有的同学的名字装起来,并且在控制台输出如果用基本数据类型的变量来装:定义48个变量装每个人的名字有一种数据结构可以很简单的实现:**数组**数组一旦申明,长度不能改变

(1)如何定义数组?

//定义数组并初始化(静态初始化)int[] nums = {1,2,3,4};//或int nums3[] = {3,55};//或int[] nums4 = new int[] {1,2,3,4,5};//定义数组并初始化(动态初始化)int[] nums2 = new int[5];//注意事项//静态初始化:定义和初始化不能分开写String[] names;//names = {"jack"};   报错names = new String[5];  //动态初始化是可以的
 数组是引用数据类型内存里面有两个区域:栈区 和 堆区基本数据类型存入 **栈区**引用数据类型存入 **堆区**

(2)下标

下标就是索引。
数组里面元素的地址是连续的:可以通过
索引地址来取出对应的元素
索引是从0开始
// 索引的作用就是位了快速的取获取数组中的元素
// 获取数组中的元素 0 1 2
String[] names = {"jack", "rose", "lucy"};
// 取第一个元素
System.out.println(names[2]);
System.out.println(names[1]);
System.out.println(names[0]);
// 动态初始化
int[] nums = new int[5];
nums[0] = 11;
nums[4] = 4;

(3)数组的长度

// length属性
//数组.length
int[] nums = new int[5];
int len = nums.length;

(4)遍历数组

for循环

 需要依赖于数组的长度注:循环内不要定义变量,在循环外定义,循环内使用
int len = nums.length;
for (int i = 0; i < len; i++) { System.out.println(nums[i]);
}

foreach

 不用依赖于数组的长度
// foreach遍历
for (int i : nums) { System.out.println(i);
}

(5)数组的冒泡排序

 冒泡排序的核心思想: 交换。
// 冒泡排序法 =》 核心思想是交换
// 通过每一次遍历交换前后两个值, 大的排后面, 小的排前面
int[] nums = {23,1,7,55,3,6,22};
// 获取长度
int len = nums.length; int temp = 0;
for (int i = 0; i < len; i++) { // -1 的原因 当最后一个元素的时候, 继续和下一个元素比较, 下一个元素没有, 会越界 // -i 的原因是 每遍历一次会少一个 for (int j = 0; j < len-1-i; j++) { // 交换 // 把大的值 往后面排 =》 升序 if (nums[j] > nums[j+1]) { temp = nums[j+1]; nums[j+1] = nums[j]; nums[j] = temp; }}
}
System.out.println(Arrays.toString(nums));

(6)数组下标越界的情况

(7)数组初始值的问题

 byte,short,int,long 初始值都是 0float, double 初始值都是 0.0char 初始值是 ‘’(空字符)boolean 初始值 false引用数据类型初始值 null

(8)数组容量的问题

 数组的长度一旦确定之后,就不能更改了我们要去操作数组里面的数据是很麻烦的:增加一个数据、修改一个数据、删除一个数据我们需要使用java提供的工具类:Arrays   /  System
----数组的扩容
 在原来的数组的长度基础之上,增加指定长度。注意:内存里面并不是在原来的数组基础之上增加,而是**新创建了数组**需要用到Arrays里的copyOf方法(地址会发生变化,并非同一个数组)

     //数组扩容String[] names = {"admin"};System.out.println(names);System.out.println(Arrays.toString(names));//长度+1names = Arrays.copyOf(names, names.length+1);System.out.println(names);System.out.println(Arrays.toString(names));
----数组的缩容

主要用于数组数据的删除。
任意位置的数据删除。删除数据后不能留空。
关键点:找到需要删除的下标

     //删除3这个元素//随机的复制数组中的元素int[] nums = {1,2,3,4,5,6,7};int index = -1;int delete = 3;//通过遍历找到3的下标for (int i = 0; i < nums.length; i++) {if(delete == nums[i]) {index=i;break;}}//copyOfRange  包前  不包后int[] nums1 = Arrays.copyOfRange(nums, 0, index);int[] nums2 = Arrays.copyOfRange(nums, index+1,nums.length);System.out.println(Arrays.toString(nums1));System.out.println(Arrays.toString(nums2));//准备一个新的数组,装最终的数据int[] newNums = new int[nums.length-1];System.out.println(Arrays.toString(newNums));//将nums1和nums2中的数据放入newNums中//先复制nums1System.arraycopy(nums1, 0, newNums, 0, nums1.length);System.out.println(Arrays.toString(newNums));//再复制nums2System.arraycopy(nums2, 0, newNums, nums1.length, nums2.length);System.out.println(Arrays.toString(newNums));

二维数组

数组中存放的元素是一个数组
语法:

//一维数组的语法
数据类型[] 数组名 = {};
数据类型[] 数组名 = new 数据类型[长度];
//二维数组的语法
数据类型[][] 数组名 = {{},{},{}....};
数据类型[][] 数组名 = new 数据类型[长度][长度]
// 二维数组
// 静态初始化
int[][] nums = {{1,2},{2,3}};
System.out.println(nums[1][1]);
// 动态初始化
int[][] nums2 = new int[3][2];
nums2[0][0] = 100;
nums2[0][1] = 250;
nums2[1][0] = 200;
nums2[1][1] = 300;
// 遍历
// 需要知道长度
for (int i = 0; i < nums2.length; i++) { for (int j = 0; j < nums2[i].length; j++) {System.out.print(nums2[i][j]+"\t");}System.out.println("");}

Java中有没有二维数组
从内存的角度是没有二维数组的
从使用的角度是有的

12.函数

定义:将业务代码中,公共的部分取出来,并且封装,取一个函数名,供其他地方调用

//语法:
public static 返回值数据类型 函数名字(形参数据类型 形参1,形参数据类型 形参2....){//定义一个函数add(int a,int b)/*** 加法运算* @param a:数值1* @param b:数值2* @return a+b*/public static int add(int a,int b) {return a+b;}//调用int sum = add(10,20);System.out.println(sum);

函数分类

(1)有参有返回值

/*** 有参有返回值* @param a* @param b* @return a-b*/public static int jian(int a,int b) {return a-b;}

(2)有参无返回值

/*** 有参无返回值* @param a* @param b*/public static void cheng(int a,int b) {System.out.println(a*b);}

(3)无参有返回值

/*** 无参有返回值* @return */public static void getRandomName() {Random random = new Random();int c = random.nextInt(100);System.out.println(c);}```(4)无参无返回值```java
/*** 无参无返回值*/public static void welcome() {System.out.println("jhhh");System.out.println("pppppp");System.out.println("cccccch");}

注意函数里面定义的变量(局部变量),该变量的作用域在函数体{}中

JavaSE第一阶段知识概括相关推荐

  1. java第一阶段知识_坚持:学习Java后台的第一阶段,我学习了那些知识

    最近的计划是业余时间学习Java后台方面的知识,发现学习的过程中,要学的东西真多啊,让我一下子感觉很遥远.但是还好我制定了计划,自己选择的路,跪着也要走完!关于计划是<终于,我还是下决心学Jav ...

  2. 【Java】javaSE的基础知识概括(完)

    十.String类 1.认识Sring类 字符串由一连串的字符组成,在Java中使用双引号""包裹表示,它可以是一个字符,也可以是一个字符序列或者由多个字符序列组成.字符串的应用非 ...

  3. JavaSE第一阶段模块四

    第一阶段模块四 异常机制和File类 异常机制(重点) 概念 1.异常在Java语言中主要指程序执行中发生的不正常情况 2.java.lang.Throwable类是Java语言中错误(Error)和 ...

  4. JAVASE第一阶段基础

    JavaSE基础知识 文章目录 JavaSE基础知识 一.Java的语法基础 1.标识符 2.关键字 3.数据类型 (1)整型 (2)浮点型 (3)字符型 (4)布尔型 4.变量 5.常量 6.运算符 ...

  5. java第一阶段知识_第一阶段 Java语言(下)

    本课程是Android入门教程之Java核心技术阶段,是Java开发高级部分,安卓开发中的基础知识,讲解以下内容: (一)反射与内省 讲解了什么是反射,反射在应用中的作用,相关反射的API,如Clas ...

  6. Python基础教学5:第一阶段知识复习

    课时:一课时 课程目标:针对已学习print().input().type()及类型转换等进行复习. 采用观察.思考.实践形式加深知识记忆. 1.学习了Python,张三写了第一个程序,看看是否可以执 ...

  7. 第一阶段知识总结及问题

     问题总结: 测试用例需求覆盖考虑不全面,测试用设计方法使用不熟练. 思维能力薄弱,分析软件需求不全面. 1.知识总结 1.1 软件工程要点 1.1.1软件的概念及分类 软件最初的概念就是就是指程 ...

  8. java怎么开始学dos,第一阶段-Java基础知识:【第一章 DOS命令与开发环境的配置 + 第一个程序HelloWorld】...

    加油Ideal星河滚烫  你是人间理想 第一阶段 JAVA基础知识 第一章 开发环境的配置 Dos 命令 在正式进入Java学习之前我们来了解一个看起来B格很高的东西--Dos命令 DOS命令,计算机 ...

  9. 大数据、人工智能、云计算知识概括

    大数据与人工智能知识概括 大数据简介 云计算 人工智能 大数据简介 什么是大数据: 举例: ①商品推荐: <1>问题:1.大量的订单如何存储 2.大量的订单如何计算 ②天气预报: < ...

最新文章

  1. leetcode(链表专题)
  2. C++学习之路 | PTA乙级—— 1034 有理数四则运算 (20 分)(精简)
  3. Redis集群搭建使用
  4. vdbench的作用_vdbench和fio测试磁盘性能的对比总结
  5. 统计学习方法--提升方法adaBoost算法(集成学习)
  6. 抖音短视频内容理解和推荐算法
  7. Vue.js 2.0 参考手册.CHM下载
  8. c语言程序设计学习中的问题与对策,C语言程序设计学习中的问题与对策.pdf
  9. WebApplication(Web应用程序)和WebSite(网站)的区别
  10. __line__ php,hitcon 2018受虐笔记一:one-line-php-challenge 学习
  11. 使用Bind配置DNS Load Balancing
  12. 常用手机屏幕显示级别与分辨率对照
  13. java邮箱格式校验
  14. 远程关闭计算机提示拒绝访问权限,win7系统远程关机拒绝访问的解决方法
  15. 第十篇:React 中的“栈调和”(Stack Reconciler)过程是怎样的?
  16. 用cmd 改电脑ip
  17. list中的元素升序排列
  18. Kotlin扩展方法进化之Context Receiver
  19. Oracle的网络三大配置文件(sqlnet.ora、tnsnames.ora、listener.ora)
  20. 细看00后90后80后的不同

热门文章

  1. 20220407——3-8线译码器:quartersⅡ和 modelsim 联合仿真 原理
  2. Struts2-062_RCE的简单复现(CVE-2021-31805)
  3. 申通快递的物流情况是怎么批量查询的
  4. ubuntu安装微信、foxmail、企业微信、qq、钉钉
  5. python图像灰度直方图统计及显示(原图像,线性拉伸后图像)
  6. python绘制3d动态模型_基于HTML5和WebGL的三维可视立体动态流程图
  7. YYYY-MM-dd
  8. time_t、struct tm,ctime各数据类型、函数详解,转换以及跟时间字符串的转换
  9. pycharm太卡了怎么办
  10. c++获取文件信息——_stat函数的使用