目录

Java学习笔记一数据类型,运算符,流程控制

Java学习笔记一(数据类型,运算符,流程控制)

前言

最近发现好多小伙伴和自己一样,虽然用Java工作了好多年,甚至不了解Java都能用来做什么,所以在总结基础知识前先说下Java言语能做什么东西。(前提:大家都知道java文件需要编译成class文件后计算机才能执行吧!)

前言1(java命令)

适用于没有开发工具,用手搓程序

(1) 编译命令:javac  Test.java  // 将java文件编译成class文件,可指定多个文件或全部文件

(2) 打包命令:jar -cvf Test.jar *.class // 将class文件打包成jar包

(3) 执行命令:java Test  // 执行class文件

(4) 执行命令:java -jar Test.jar  // 执行jar文件

前言2(基础功能)

(1) Java编译后的class文件,可以在Dos命令的窗口中运行。

java文件内容(不含package信息)


public class TestClass {
	public static void main(String[] args) {
		System.out.println("hello world");
	}
}

编译成class文件

https://i-blog.csdnimg.cn/direct/87f83f57ee5a4c85bf0fbb44433bfd24.png

执行class文件

https://i-blog.csdnimg.cn/direct/f3ef810722a54215b99ed09c58ec8265.png

相当于在Eclipse中的执行

https://i-blog.csdnimg.cn/direct/e3c4d2e20d0f4670b988577e4011e991.png

注意点1:含package的java文件,需要将class文件放到对应文件夹下,在最外层指定包名执行


package main.java;
public class TestClass {
	public static void main(String[] args) {
		System.out.println("hello world");
	}
}

https://i-blog.csdnimg.cn/direct/4db7382ae8eb46d4999b98ab23136398.png

注意点2:main函数的参数,执行文件时可以指定


public class TestClass {
	public static void main(String[] args) {
		System.out.println("hello " + args[0]);
	}
}

https://i-blog.csdnimg.cn/direct/7ceac02173eb4926af3480cb0f69d6fb.png

在Eclipse中指定参数

https://i-blog.csdnimg.cn/direct/fe955b9db3094d1c96d31305222bf96a.png

(2) Java生成jar文件(可给其它程序引,或做成窗口程序)

java文件代码


package main.java;

import java.awt.*;
import javax.swing.JFrame;

public class TestFrame {

	public static void main(String[] args) {
		JFrame frame = new JFrame("Hello World Frame");
		frame.setBounds(100, 100, 500, 300);
		frame.add(new Panel().add((new Label("hello world"))));
		frame.setVisible(true);
	}

}

编译成可执行jar

https://i-blog.csdnimg.cn/direct/bd4296a536924ca1b41cbd6bd2833b12.png

(3) 新建JavaWeb项目,做成网站服务器

新规(Dynamic Web Project)导出war文件,发布到服务器(例:Tomcat)

详细:TODO

1. 数据类型

1.1 基本类型(8种)

(1) byte:1字节(8位)  -128~127

(2) short:2字节 -32768~32767

(3) int: 4字节 -2147483648~2147483647

(4) long:8字节 -…~ 9223372036854775807(共19位数字)// long x = 1L;

(5) float:4字节(32位)// float f = 0.1F;

(6) double:8字节(64位) // double d = 0.1;

(7) char:2字节(0~65535) // 16位无符号unicode码,char c = 97;

(8) boolean:1字节  // boolean b1 = true;  boolean b2 = false;

1.2 引用类型

1.2.1 分类

String,数组,类,集合等所有的类都是引用类型。

1.2.2 数组

一维数组

(1) 定义1:int  args[];

(1) 定义2:int[] args;

(2) 定义并初始化长度:int[]  args = new int[5];

(3) 定义并初始化:int[]  args = new int[] {1,2,3}

(4) 定义并初始化简写:int[]  args = {1,2,3}

二维数组

(1) 定义1:int  args[][];

(1) 定义2:int[][] args;

(2) 定义并初始化长度:int[][]  args = new int[5][3];

(3) 定义并初始化值:int[][]  args = new int[][] {{1},{2}}

(4) 定义并初始化值简写:int[][]  arg = {{1},{2}}

多维数组

(1) 定义:int args[][][].. // 其它略

注释:初始化长度后,全局变量数组与局部变量数组又相同默认值(byte,short,int(0), double,float(0.0), boolean(false),引用类型(null))

2. 运算符

2.1 种类

2.1.1 算术运算符

加(+), 减(-), 乘(*), 除(/), 余(%), 自增(++), 自减(–), 负号(-)

注释:++i (先计算后使用,符号在前先计算),System.out.print(++i) 等同于 i=i+1,输出i。

注释:i++ (先使用后计算,变量在前先使用),System.out.print(i++) 等同于 输出i,i=i+1。

2.1.2 赋值运算符

等(=), 加等(+=), 减等(-=), 乘等(*=), 除等(/=), 余等(%=)

2.1.3 关系运算符

大于(>) , 大于等于(>=), 小于(<), 小于等于(<=), 等于(==), 不等于(!=)

2.1.4 逻辑运算符

短路与( && ), 短路或( || ), 非( ! ), 逻辑与( & ), 逻辑或( | ), 异或( ^ 前后条件一致false,不一致true)

2.1.5 三元运算符

表达式 ? true值 : false值

2.2 类型转换

2.2.1 隐式类型转换

byte -> short(char) -> int -> long -> float -> double // byte short char转int后做计算

2.2.2 显示类型转换(强制转换)

int i = (int) x; // 浮点强转整数后舍弃小数部分

(1) 数值计算:byte, short先转为int再计算。 int + double 范围小的先转范围大的再计算

(2) 字符串计算:1+“1” = “11”, 1+2+“3” = “33”, 1+2+“3”+4+5 = “3345”

注释:制表符  ‘\t’  “\t” ,字符串+"\t"会将字符串补齐8位

(3) 字符计算: char a = ‘a’;  a + 1 = 98, a+“1” = “a1”

2.2.3 进制转换

进制单位:b(bit 位) => B(Byte 字节) => KB => MB => GB => TB

泛用的转换方式:1B=8bit,1KB=1000B,1MB=1000KB, 1GB=1000MB

精确的转换方式:1B=8bit,1KiB=1024B,1MiB=1024KiB, 1GiB=1024MiB

(1) 进制:

二进制(0~1 // int x = 0b111 以0b,0B开头)

八进制(0~7 // int x = 017 以0开头)

十进制(0~9)

十六进制(09 af // int x = 0xf9 以0x,0X开头)

(2) 进制转换:

十转二(除2取余倒叙):十进制(6) 转二进制,6/2=3余(0) => 3/2=1余(1) => 1/2=0余(1)  –> 110

二转十:例(1101)转二进制,1(3)1(2)0(1)1(0) => 2(3次方)+2(2次方)+0+2(1次方) =>8+4+0+1=13

注释:(2的1所在右数第几-1位次方)

十进制转八进制(先转二进制再转八进制):(01, 100, 001) => 141

十进制转十六进制(先转二进制再转十六进制):(0110, 0001) => 61

注释:八进制与十六进制便于查看二进制,八进制3位一组,十六进制4位一组

3 流程控制

3.1 分歧条件

3.1.1 if分歧

if (条件) { 处理… }

if (条件) { 处理… } else { 处理 }

if (条件) { 处理… } else if (条件) { 处理 } else { 处理 }

3.1.2 switch分歧

注释:旧版本JDK的switch不能传String类型


switch(表达式) {
    case 值:
        处理...
        break;
    case 值:
        处理...
        break;
    default:
        处理...
}

3.2 循环条件

3.2.1 for 循环


// for循环
for (int i=0; i<10; i++) {
    ...
    // break 跳出循环
    // continue 跳过本次循环
}

//增强型for循环
for (类型 变量名: 集合) {
    ...
    // break 跳出循环
    // continue 跳过本次循环
}

// 循环嵌套
out:for (int i=0; i<10; i++) {
    for (int j=0; j<5; j++) {
        // break; // 默认退出内层循环
        // break out; // 退出外层循环
    }
}

3.2.2 while循环

注释:先判断条件,满足条件则执行。


while (表达式) {
    ...
    // break 跳出循环
    // continue 跳过本次循环
}

3.2.3 do while循环

注释:先执行后判断,满足条件则循环。


do {
    ...
    // break 跳出循环
    // continue 跳过本次循环
} while (表达式);