程序 : 一堆命令的集合,一般是个可执行文件
1 数据想要运算,必须先存储
2 存储方式
内存 : 两端无限延伸的线
硬盘 : 螺旋线
3 存储单位
Bit = 比特 = 位
Byte = 字节 = 8bit
-128 ~127 为了保存正负数,只能丢失一半精度,最高位作为符号位
1 表示负数 0 表示正数
负数存储 存补码
比如 2 : 0 0000010
比如 -2 : 1 0000010(原码) -> 1 1111101 (反码) -> 1 1111110(补码)
反码 : 1变0 , 0变1
补码 : 反码+1
Short = 短整型 = 2byte = 16bit
Int = 整型 = 4byte = 32bit -2147483648 ~2147483647
Long = 长整型 = 8byte = 64bit
1.1.2进制
二进制 : 0101010100011 java中没有办法直接表示二进制
八进制 : 0~7 , 满8进一 , java中 如果数据是以 0开头 表示八进制 012
十进制 : 满10进1 , java中数据非0开头,都是10进制 2450
十六进制 : 满16进1,a表示10,b表示11....f表示15 , java中数据以0x开头,表示16进制 0x12
1.1.3数据类型分类
本质 : 规定占用内存空间的大小,一般用位和字节表示
引用数据类型
类,数组,接口
基本数据类型
数值型
整数型
byte,short,int,long
浮点型
float,double
字符型
char
布尔型
boolean
Byte : 字节 8位
Short : 短整型 16位
Int : 整型 32位
Long : 长整型 64位
Float : 单浮点,32位
Double : 双浮点 64位
Char : 字符 16位
Boolean : 布尔型 8位, 00000001 是true , 00000000 是false
ASCII码
0 : 48
1 : 49
A : 65
B : 66
a : 97
b : 98
1.1.4 命名规则所有需要我们命名的地方,都适用
1 变量名
2 类名
3 文件名
4 文件夹名
5 方法名
强制 : 只能出现 大小写字母,美元符号$,数字,下划线_,且数字不能开头
不能使用关键字和保留字,(不能只使用关键字和保留字,关键字1 是可以)
关键字 : 就是java中目前已经使用的有代表意义的单词
保留字 : 就是java目前还没有使用的关键字,但是在后续版本可能会用到
非强制 : 望文知义,驼峰命名法
Int a = 18;
Int x = 18;
Int age = 18;
1.1.5数据类型的使用
1.1.5.1整数型
package src;
public class sjsy {
public static void main(String[] arg){
//使用byte声明一个8位大小的空间,并给空间取名为b_1把11放到空间中
byte b_1=11;//字节
byte b_2=011;
System.out.println(b_2);
//打印b-1空间中的内容,注意,没有双引号
System.out.println(b_1);
int i_1=111419;//整形,十进制
int i_2=11111011;//二进制
System.out.println(i_1);
System.out.println(i_2);
short s_1=7777;//短整型
System.out.println(s_1);
long l_1=111419555L;//长整型,需要加L/l建议大写,因为小写和1不太好区分
System.out.println(l_1);
}
}
1.1.5.2浮点型
package src;
public class day_02 {
public static void main(String[] args) {
double d_1=1.2;
//可以加D/d,一般不加
System.out.println(d_1);
float f_1=7.7f;
//float需要加f/F,因为不加f/F默认是double类型的小数
//加F说明7.7就是float类型的值
System.out.println(f_1);
//强制转换,把double类型强制转换成float类型
float f_2=(float)1.2;
System.out.println(f_2);
}
}
1.1.5.3字符型
package src;
public class day_03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
char c_1='a';
int i_1=c_1;
System.out.println(i_1);
System.out.println(c_1);
char c_2='张';
//空格也算
char c_3=' ';
System.out.println(c_2);
System.out.println(c_3);
s
}
}
1.1.5.4转义符
package src;
public class day_04 {
public static void main(String[] args){
char c_1 =''';
//字符串类型,双引号表示
String str="guanqianlong1114";
System.out.println(c_1);
System.out.println(str);
//制表符tab键
char c_2='t';
//保存要写两个,把转义符转化
char c_3='\';
//换行符n,重新对c_3赋值换行
c_3='n';
System.out.println(c_3);
}
}
1.1.5.5布尔型
package src;
public class day_05 {
public static void main(String[] args) {
boolean f_1=true;
f_1=false;
}
}
1.1.6数据类型转换
package src;
public class day_06 {
public static void main(String[] args) {
byte b1=123;
int i1=b1;
short s1=(short)i1;
int i2=111419;
byte b2=(byte)i2;
System.out.println(b2);
System.out.println(s1);
}
}
1.1.7混合运算
package src;
public class day_07 {
public static void main(String[] args) {
// TODO Auto-generated method stub
byte b3 = 10;
double d3 = 30;
// 在混合运算中,结果是运算中最高的类型
double result = d3 - b3;
int i3 = 20;
int i4 = 3;
// 6 , 不要余数
int i5 = i3 / i4;
// 6.0 因为i3/i4结果为int类型的6,然后把6自动类型转换为double类型为6.0 而不是6.66666....
double i6 = i3 / i4;
System.out.println(i5);
byte b_1 = 1;
short s_1 = 2;
// 当 byte , short , char , int 四种中 任意一种或多种进行混合运算是,结果都为int类型
int s_2 = s_1 + b_1;
}
}
1.2 常量和变量
1.2.1常量和字面量
package _02_Var;
public class Var_01 {
public static void main(String[] args) {
//字面量,不可以重复使用
//但是有类型,有空间,不过空间是临时的
//整数默认int ,小数默认 double
}
}
1.2.2变量
1.2.2.1声明
1.2.2.2变量分类
1.2.2.3变量调用
package _02_Var;
public class Var_02 {
// 静态变量
static int a = 2;
// 成员变量
int b = 10;
public static void main(String[] args) {
System.out.println(Var_02.a);
System.out.println(a);
// 创建一个int空间,命名为 i , 并赋值为10
int i = 10;
// 根据i 找到对应的数据,并打印
System.out.println(i);
System.out.println(i);
// 更改i空间的值为2
i = 2;
System.out.println(i);
System.out.println(i);
if (true) {
int x = 2;
System.out.println(x);
System.out.println(i);
}
}
}
1.2.2.4变量默认值
package _02_Var;
public class Var_3 {
static int b;
public static void main(String[] args) {
//局部变量没有默认值,不复赋值就不能用,用了就报错
int a;
int i =1;
System.out.println(i);
System.out.println(b);
}
}
1.3运算符
1.3.1算数运算符
package _03_Operator;
public class Operator_01 {
public static void main(String[] args) {
int a = 10;
int b = 3;
// 因为是整数 所以 不要余数 就是 3
System.out.println(a / b);//除法
// 1
System.out.println(a % b);//取余
int s = 100;
// i++ 和 ++i 的区别 : i++ 先赋值后+1, ++i 先+1 后赋值
// 如果单独出现,没有区别
// s++;
// ++s;
// 代码从左到右执行初始化,先赋值 后++
// s = s++ + 10;
// s = 100 +10; s=101
// s = 110
s = s++ + s;
// s = 100 + 101; s = 101
System.out.println(s);
int k = 100;
// 先++ 再赋值
k = ++k + k;
// k = 101 + 101; k = 101
System.out.println(k);
int m = 10;
int e = 2 + m++;
System.out.println(m);
System.out.println(e);
int p = 2;
// 先从左到右初始化在计算
p = 2 + p++ + ++p + p++ + ++p;
// p = 2 + 2 + 4 + 4 + 6; p = 6
System.out.println(p);
int x = 10;
x = 10 + x++ + ++x + (10 * x++) + ++x;
System.out.println(x);
}
}
1.3.2关系运算符
package _03_Operator;
public class Operator_03 {
public static void main(String[] args) {
int a =10;
int b=11;
System.out.println(a>b);//flase
System.out.println(a>=b);//flase
System.out.println(a
1.3.3逻辑运算符
package _03_Operator;
public class Operator_02 {
public static void main(String[] args) {
System.out.println(~2);
// 如果 & 两边是数字 , 就变成了与运算
// 转换为二进制,每位比较, 都是1 取1,否则 取0
// 最终结果,不会超过两个数中最小的一个
// 0 000 1000
// 0 000 1001
// 0 000 1000
System.out.println(8 & 9);
// false
System.out.println(1>2 & 1<2);
// true
System.out.println(1>2 | 1<2);
// true
System.out.println(1>2 ^ 1<2);
// true
System.out.println(!(1>2));
}
}
1.3.4短路与,短路或
public class Operator_04 {
public static void main(String[] args) {
int a = 10;
int b = 10;
int e = 10;
// 第一个条件为false,第二个不执行了
boolean c = (a > b && a > b++);
boolean c1 = (a > e& a > e++);
System.out.println(b);
System.out.println(c1);
// 如果一个运算中, && 和 || 都有,那么 && 优先级 大于 ||
boolean flag = true || false && false;
System.out.println(flag);
}
}
1.3.5位运算符
package _03_Operator;
public class Operator_05 {
public static void main(String[] args) {
System.out.println(-2 << 2);
}
}
1.3.6赋值运算符
package _03_Operator;
public class Operator_06 {
public static void main(String[] args) {
int i = 10;
// 等于 i = i + 10;
i+=10;
System.out.println(i);
i -=5;
System.out.println(i);
byte b = 2;
// 等价于 b = b + 1 , 和 b+=1;
b++;
// b = b + 1;
b+=3333;
// 虽然 += , ++ 和 b= b + xxx 是等价关系.但是 b+xxx 这种运算,需要进行强制类型转换
// 而 ++ 和 += 这些 会自动强制转换
b=127;
b++;
System.out.println(b);
}
}
package src;
public class sjsy {
public static void main(String[] arg){
//使用byte声明一个8位大小的空间,并给空间取名为b_1把11放到空间中
byte b_1=11;//字节
byte b_2=011;
System.out.println(b_2);
//打印b-1空间中的内容,注意,没有双引号
System.out.println(b_1);
int i_1=111419;//整形,十进制
int i_2=11111011;//二进制
System.out.println(i_1);
System.out.println(i_2);
short s_1=7777;//短整型
System.out.println(s_1);
long l_1=111419555L;//长整型,需要加L/l建议大写,因为小写和1不太好区分
System.out.println(l_1);
}
}
1.1.5.2浮点型
package src;
public class day_02 {
public static void main(String[] args) {
double d_1=1.2;
//可以加D/d,一般不加
System.out.println(d_1);
float f_1=7.7f;
//float需要加f/F,因为不加f/F默认是double类型的小数
//加F说明7.7就是float类型的值
System.out.println(f_1);
//强制转换,把double类型强制转换成float类型
float f_2=(float)1.2;
System.out.println(f_2);
}
}
1.1.5.3字符型
package src;
public class day_03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
char c_1='a';
int i_1=c_1;
System.out.println(i_1);
System.out.println(c_1);
char c_2='张';
//空格也算
char c_3=' ';
System.out.println(c_2);
System.out.println(c_3);
s
}
}
1.1.5.4转义符
package src;
public class day_04 {
public static void main(String[] args){
char c_1 =''';
//字符串类型,双引号表示
String str="guanqianlong1114";
System.out.println(c_1);
System.out.println(str);
//制表符tab键
char c_2='t';
//保存要写两个,把转义符转化
char c_3='\';
//换行符n,重新对c_3赋值换行
c_3='n';
System.out.println(c_3);
}
}
1.1.5.5布尔型
package src;
public class day_05 {
public static void main(String[] args) {
boolean f_1=true;
f_1=false;
}
}
1.1.6数据类型转换
package src;
public class day_06 {
public static void main(String[] args) {
byte b1=123;
int i1=b1;
short s1=(short)i1;
int i2=111419;
byte b2=(byte)i2;
System.out.println(b2);
System.out.println(s1);
}
}
1.1.7混合运算
package src;
public class day_07 {
public static void main(String[] args) {
// TODO Auto-generated method stub
byte b3 = 10;
double d3 = 30;
// 在混合运算中,结果是运算中最高的类型
double result = d3 - b3;
int i3 = 20;
int i4 = 3;
// 6 , 不要余数
int i5 = i3 / i4;
// 6.0 因为i3/i4结果为int类型的6,然后把6自动类型转换为double类型为6.0 而不是6.66666....
double i6 = i3 / i4;
System.out.println(i5);
byte b_1 = 1;
short s_1 = 2;
// 当 byte , short , char , int 四种中 任意一种或多种进行混合运算是,结果都为int类型
int s_2 = s_1 + b_1;
}
}
1.2 常量和变量
1.2.1常量和字面量
package _02_Var;
public class Var_01 {
public static void main(String[] args) {
//字面量,不可以重复使用
//但是有类型,有空间,不过空间是临时的
//整数默认int ,小数默认 double
}
}
1.2.2变量
1.2.2.1声明
1.2.2.2变量分类
1.2.2.3变量调用
package _02_Var;
public class Var_02 {
// 静态变量
static int a = 2;
// 成员变量
int b = 10;
public static void main(String[] args) {
System.out.println(Var_02.a);
System.out.println(a);
// 创建一个int空间,命名为 i , 并赋值为10
int i = 10;
// 根据i 找到对应的数据,并打印
System.out.println(i);
System.out.println(i);
// 更改i空间的值为2
i = 2;
System.out.println(i);
System.out.println(i);
if (true) {
int x = 2;
System.out.println(x);
System.out.println(i);
}
}
}
1.2.2.4变量默认值
package _02_Var;
public class Var_3 {
static int b;
public static void main(String[] args) {
//局部变量没有默认值,不复赋值就不能用,用了就报错
int a;
int i =1;
System.out.println(i);
System.out.println(b);
}
}
1.3运算符
1.3.1算数运算符
package _03_Operator;
public class Operator_01 {
public static void main(String[] args) {
int a = 10;
int b = 3;
// 因为是整数 所以 不要余数 就是 3
System.out.println(a / b);//除法
// 1
System.out.println(a % b);//取余
int s = 100;
// i++ 和 ++i 的区别 : i++ 先赋值后+1, ++i 先+1 后赋值
// 如果单独出现,没有区别
// s++;
// ++s;
// 代码从左到右执行初始化,先赋值 后++
// s = s++ + 10;
// s = 100 +10; s=101
// s = 110
s = s++ + s;
// s = 100 + 101; s = 101
System.out.println(s);
int k = 100;
// 先++ 再赋值
k = ++k + k;
// k = 101 + 101; k = 101
System.out.println(k);
int m = 10;
int e = 2 + m++;
System.out.println(m);
System.out.println(e);
int p = 2;
// 先从左到右初始化在计算
p = 2 + p++ + ++p + p++ + ++p;
// p = 2 + 2 + 4 + 4 + 6; p = 6
System.out.println(p);
int x = 10;
x = 10 + x++ + ++x + (10 * x++) + ++x;
System.out.println(x);
}
}
1.3.2关系运算符
package _03_Operator;
public class Operator_03 {
public static void main(String[] args) {
int a =10;
int b=11;
System.out.println(a>b);//flase
System.out.println(a>=b);//flase
System.out.println(a
1.3.3逻辑运算符
package _03_Operator;
public class Operator_02 {
public static void main(String[] args) {
System.out.println(~2);
// 如果 & 两边是数字 , 就变成了与运算
// 转换为二进制,每位比较, 都是1 取1,否则 取0
// 最终结果,不会超过两个数中最小的一个
// 0 000 1000
// 0 000 1001
// 0 000 1000
System.out.println(8 & 9);
// false
System.out.println(1>2 & 1<2);
// true
System.out.println(1>2 | 1<2);
// true
System.out.println(1>2 ^ 1<2);
// true
System.out.println(!(1>2));
}
}
1.3.4短路与,短路或
public class Operator_04 {
public static void main(String[] args) {
int a = 10;
int b = 10;
int e = 10;
// 第一个条件为false,第二个不执行了
boolean c = (a > b && a > b++);
boolean c1 = (a > e& a > e++);
System.out.println(b);
System.out.println(c1);
// 如果一个运算中, && 和 || 都有,那么 && 优先级 大于 ||
boolean flag = true || false && false;
System.out.println(flag);
}
}
1.3.5位运算符
package _03_Operator;
public class Operator_05 {
public static void main(String[] args) {
System.out.println(-2 << 2);
}
}
1.3.6赋值运算符
package _03_Operator;
public class Operator_06 {
public static void main(String[] args) {
int i = 10;
// 等于 i = i + 10;
i+=10;
System.out.println(i);
i -=5;
System.out.println(i);
byte b = 2;
// 等价于 b = b + 1 , 和 b+=1;
b++;
// b = b + 1;
b+=3333;
// 虽然 += , ++ 和 b= b + xxx 是等价关系.但是 b+xxx 这种运算,需要进行强制类型转换
// 而 ++ 和 += 这些 会自动强制转换
b=127;
b++;
System.out.println(b);
}
}



