Java基础

cmd打开Java代码#

//代码编译
javac Hello.java
//运行编译码  
java Hello

输入输出#

输入#

import java.util.Scanner; 

public class Test1 {
    //编写一个 main 方法
    public static void main(String[] args) {
      
        // 1. 创建 Scanner 对象 , new 创建一个对象,体会
      // 2. 当程序执行到 next() 方法时,会等待用户输入~~~ 
      
      Scanner obj1 = new Scanner(System.in);
      System.out.println("请输入名字");
      String name = obj1.next();
      System.out.println("请输入年龄");
      int age = obj1.nextInt(); 

      System.out.println("人的信息如下 名字:" + name + " 年龄:" + age );
    }
}

输出#

System.out.println(" ");


JDK、JRE 和 JVM 的关系#

  • JDK = JRE + 开发工具集(如 Javac、java编译工具等)

  • JRE = JVM + Java SE标准类库

  • 只测试只需要 JRE即可


Java八大数据类型#


数据转换#

自动转换规则#

  • 容量大的类型能装容量小的(自动转换) double name1 = 1.1F , 反之报错

  • 两个数字类型加减运算,先将所有值自动装换成他们当中容量最大的类型 float num1 = 10 + 1.2F

  • ★(byte、short)和 char 它们之间相互赋值,不能自动转换 byte a = 10; char b = a; 这样做是报错的

  • ★ 但是 byte、short、char 它们可以相加减,计算之前就会把它们全转成int类型 short a = 10; char b = 'b'; int c = a + b; 打印c会得108

强制转换规则#

  • 直接强制转换,注意溢出问题
double a = 1.22;
System.out.println((byte)a); // 输出结果为:1
  • 转成字符串String的统一方式
double a = 1.22;
String b = a + "";
System.out.println(b);
  • 字符串转成其他类型的统一方式:
double c = Double.parseDouble(b);
  • 字符串String转成char用: b.charAt(下标)

进制转换#

  • 二进制开头:0b
  • 八进制开头:0
  • 十六进制开头:0x

所有进制转成十进制#

十进制转成所有进制#

二进制转八进制看3位,二进制转十六进制看4位#


运算符#

算术运算符#

除法 10 / 4 结果是2 ; 10.0 / 4 结果是2.5#

取模(取余) 10 % 3 = 1#

  • 有负数的取模公式 : a % b = a - a / b * b
    -10 % 3 = -1 、-10 % -3 = -1、 10 % -3 = 1

前自增(先自增后赋值) int a = 1; int b = ++a; 输出b结果是:2#

  • ① temp = i + 1 ② temp = i ③ i = temp

后自增(先赋值后自增) int a = 1; int b = a++; 输出b结果是:1#

  • ① temp = i ② i = i + 1 ③ i = temp

逻辑运算符#

  • a&b 逻辑与: 两边都会运算,两个都得ture, 才true
  • a|b 逻辑或:两边都会运算,其中一个ture,就true

  • a&&b 短路与:第一个是false,后面就不运算了
  • a||b 短路或: 第一个是true,后面就不运算了

  • a^b 逻辑异或: a和b要不同,才为true

位运算符#

原码、反码、补码#

7种位运算符#

示例运算#

流程控制#

三大流程控制语句: 顺序控制、分支控制、循环控制

分支控制#

  • 单分支 if(){}
  • 双分支 if() else{}
  • 多分支 if(){} else if(){} ... else{}
  • 分支嵌套 if(){if()
  • switch分支
String name = "Jan";

switch(name){  // 符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型
    case "apple":
    System.out.print("是他" + name);
    break;

    case "Jan":
    System.out.print("是他" + name);
    break;

    case "Lemon":
    System.out.print("是他" + name);
    break;

    default:
    System.out.print("全都不是");
    break;
}

循环控制#

for、while、do while

注意点

  • for 和 while 执行循序都是 ①循环变量初始化; ②条件; ③代码体; ④循环变量迭代 i++
  • do while 执行循序则是 ①循环变量初始化;②代码体; ③循环变量迭代 i++; ④条件;
  • 多重循环嵌套 三者可以相互嵌套
  • break; 终止最近的一层循环
  • continue; 跳过循环中某个if条件

数组#

1. 数组里面只能是同类型的数据
2. 二维数组必须先定义值为数组

动态初始化#

  • 创建一个有10个0的数组
    int arr = new int[10];

  • 创建一个二维数组
    int[][] arr = new int[2][];

静态初始化#

double arr[] = {1.0, 2.0, 3.0}

数组拷贝#

int[] arr1 = {1, 2, 3};

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

数组颠倒#

for(int i = 0; i < arr.length / 2; i++){
    int temp;
    temp = arr[arr.length - 1 - i];//保存
    arr[arr.length - 1 - i] = arr[i];
    arr[i] = temp;

}

在数组里面找值#

String[] names = {"a", "b", "c"};

int index = -1;
String findName = "b";
for(int i = 0; i < names.length; i++) {
    if("findName".equals(names[i])) {
        System.out.println("找到 " + findName + "下标为= " + i);
        index = i;
        break;
    }
}
if(index == -1) { //没有找到
    System.out.println("sorry ,没有找到 " + findName);
}

冒泡排序 Bubble Sorting#

int[] arr = {1, 2, 3};
for( int i = 0; i < arr.length - 1; i++) {
    for( int j = 0; j < arr.length - 1 - i; j++) {
        //如果前面的数>后面的数,就换位
        if(arr[j] > arr[j + 1]) {
        int temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;
        }
    }
}
posted @   1502god  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
-->
点击右上角即可分享
微信分享提示
主题色彩