P18 Hello world!
1 创建文件夹
2 新建一个java文件
主类和文件名要一致
public class hello {
public static void main(String[] args){
System.out.print("Hello,world!");
}
}
java是大小写敏感的
3 编译
在项目文件根目录的DOS窗口编译.java文件生成字节码文件.class
javac hello.java
4 运行
java hello
文件名和类名必须保持一致,文件名和类名需首字母大写,这里我写的demo没有大写
P19 Java程序运行机制
java既是编译型也是解释型
编译型:一次编译,直接执行
解释型:边解释,边执行
源程序.java→Java编译器→字节码文件.class→类装载器→字节码校验器→解释器→操作系统平台
P20 IDEA安装
快捷键
PSVM直接输出main方法,sout直接print
IDEA优化
P21 基础语法(注释)
单行注释、多行注释、文档注释
1 配置IDEA项目结构
2 改变注释字体、颜色
3 单行注释和多行注释
//
/*
*/
4 文档注释
/**+回车
P22 标识符
- Java所有组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
- 标识符的命名规范,以字母、美元符、下划线开头进行命名
- 关键字不能作为变量名和方法名
- 标识符是大小写敏感
P23 数据类型
Java是强类型语言
- 变量必须先定义后使用
- 变量类型不可变
type varName = varValue;
数据类型分为基本类型和引用类型
基本类型
整数类型(byte、short、int、long)、浮点类型(float、double)、字符类型(char)、布尔类型(boolean)
- float类型的value后面要加F;
- long类型的value后面要加L;
String不是关键字,它是一个类
为了查看基本数据类型的范围,我们可以先输入一个包装类,然后定位查看其范围
引用数据类型
类、接口、数组
P24 数据类型扩展
进制
避免使用浮点数进行比较,因为浮点数是有限、离散的,四舍五入的
银行业务常用BigDecimal数学工具类来定义钱
public class P24 {
public static void main(String[] args) {
// 整数拓展 进制
int i = 10;
int i2 = 010; // 八进制
int i3 = 0x11; // 十六进制
System.out.println(i2);
System.out.println(i3);
// 浮点数拓展
float a = 0.1f;
double b = 1.0/10;
System.out.println(a == b);
float d1 = 123456786786767676f;
float d2 = d1 + 1;
System.out.println(d1 == d2);
// 字符扩展
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println(c2);
// 强制转换
System.out.println((int)c1);
System.out.println((int)c2);
// 所有字符本质还是数字
// 涉及一个编码问题 unicode 2字节 65536
// U0000 - UFFFF
char c3 = '\u0061';
System.out.println(c3);
// 转义字符 还有很多转义字符
System.out.println("H\tJ");
System.out.println("H\nJ");
// 第一个比较的是地址,第二个比较的才是值
String sa = new String("Hello");
String sb = new String("Hello");
System.out.println(sa == sb);
String sc = new String("Hello");
String sd = new String("Hello");
System.out.println(sa == sb);
// 布尔值扩展
boolean flag = true;
if (flag == true){ //菜鸟
System.out.println("haha");
}
if (flag){ //老手
System.out.println("haha");
}
// 代码要精简易读
}
}
P25 类型转换
/*
在类型转化你的时候,要注意类型转化的优先级
强制类型转换(type)value 高到低
自动类型转换 低到高
*/
public class P25 {
public static void main(String[] args) {
// 强制转换
int i = 128;
byte b = (byte)i;
System.out.println(i);
System.out.println(b);
// 发生内存溢出问题
// 自动转换
double c = i;
/*
注意点
1. 不能对布尔型进行转换
2. 不能把对象类型转换为不相干的类型
3. 把高容量转换到低容量强制转换
4. 转换的时候可能存在溢出或精度问题
*/
System.out.println("==============");
System.out.println((int)23.7);
System.out.println((int)-45.89f);
char g = 'a';
int d = g + 1;
System.out.println((char)d);
/*
操作比较大的数的时候,注意溢出问题
jdk7数字之间可用下划线分割
*/
int money = 10_0000_0000;
int years = 20;
// int total = money * years;
// System.out.println(total);
long total = money * years;
long total2 = money * (long)years; // 先把一个数转换为long
System.out.println(total2); // 计算的时候溢出了,转化的时候已经出现问题了
//
}
}
P26 变量、常量、作用域
public class P26 {
/*
Java是强类型语言,每个变量都必须声明其类型
变量代表一块内存空间,我们只改变这内存空间的值
Java变量是程序中最基本的存储单元,包括变量名、变量类型和作用域
type varName = value
可用逗号声明多个同类型变量(不建议)
类型可为基本类型或引用类型
变量名必须为合法标识符
声明后以分号结束
*/
// 实例变量,从属于对象,不初始化,会有默认值
// 数值型默认为0,布尔值默认是false,字符串是null
// 除了基本类型都是null
String name;
int age;
// 类变量
static double salary = 2500;
// 常量,初始化后不可变,为作区分,一般使用大写字符
// 修饰符不存在先后顺序
static final double PI = 3.14;
public static void main(String[] args) {
// int a,b,c;
int a = 1;
int b = 1;
int c = 1;
String name = "Hu";
char x = 'x';
double pi = 3.14;
//变量类型,引用类型
P26 p26 = new P26();
System.out.println(p26.age);
System.out.println(p26.name);
// 类变量 +static
System.out.println(salary);
// 常量
System.out.println(PI);
/*
变量作用域:类变量、实例变量和局部变量
*/
}
// 其他方法,局部变量是在方法里的,使用之前必须声明和初始化值
public void add(){
// 只在add里有效
int i = 10;
System.out.println(i);
}
}
/*
所有变量、方法和类名要见名知意
类成员变量 驼峰原则 第一个单词小写,后面的单词首字母大写 lastName
局部变量 首字母小写和驼峰原则
常量 大写字母+下划线
类名 首字母大写和驼峰原则 GoodMan Man
方法名 首字母小写和驼峰原则 goRun()
*/
P27 基本运算符
package operator;
public class P27 {
public static void main(String[] args) {
int a = 10;
int b = 20;
long c = 15454141L;
int d = 5;
short e = 20;
byte f = 8;
// 有long为long,无long为int,有double为double
System.out.println(c+d+e+f); //long
System.out.println(d+e+f); // int
System.out.println(e+f); //int
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
// 要强制转换
System.out.println(a/(double)b);
}
}
package operator;
public class P27_1 {
public static void main(String[] args) {
// 关系运算符返回一个布尔型
int a = 10;
int b = 20;
int c = 21;
System.out.println(a == b);
System.out.println(a > b);
System.out.println(a < b);
System.out.println(c % a);
}
}
P28 自增自减运算符,Math类
public class P28 {
public static void main(String[] args) {
// ++ -- 一元运算符
int a = 3;
// 先赋值再自增
int b = a++;
// a = a + 1
System.out.println(a);
// a = a + 1
// 先自增再赋值
int c = ++a;
System.out.println(a);
System.out.println(b);
System.out.println(c);
// 幂运算
// 很多运算我们使用工具类
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
P29 逻辑运算符、位运算符
public class P29 {
// 逻辑运算符
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a || b:" + (a || b));
System.out.println("a && b:" + (a && b));
System.out.println("!(a && b):" + !(a && b));
// 短路运算 a && b,b为假就不会再进行运算
int c = 5;
boolean d = (c<4) && (c++<6);
System.out.println(c);
}
}
public class P29_1 {
public static void main(String[] args) {
/*
位运算
A = 0011 1100
B = 1010 1010
A & B
A | B
异或
A ^ B
~B
<<左移为×2 >>右移为÷2
效率极高
*/
System.out.println(2<<3);
}
}