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文件
执行class文件
相当于在Eclipse中的执行
注意点1:含package的java文件,需要将class文件放到对应文件夹下,在最外层指定包名执行
package main.java;
public class TestClass {public static void main(String[] args) {System.out.println("hello world");}
}
注意点2:main函数的参数,执行文件时可以指定
public class TestClass {public static void main(String[] args) {System.out.println("hello " + args[0]);}
}
在Eclipse中指定参数
(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
(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)
十六进制(0~9 a~f // 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 (表达式);