Java基础知识

1.常量和变量

1.开辟内存空间(JVM)

2.提取数据(.class)

3.cpu调度运行

常量和变量就是在内存中做数据交换的一个过程。

(1)常量

         在程序的运行期数据不发生变化的量就是常量。

         整数的常量:24小时,365天

         小数:重力系数9.8, 圆周率3.14

         字符: ‘男’,

         布尔数值:true,false

         空常量:null。

(2)变量

在程序运行的过程中存储可以变化的数据的量(内存的空)就叫做变量。

2.数据类型

Java的数据类型分为:基本数据类型和引用数据类型。

基本数据类型有8种

字节:

1

1

1

1

1

1

1

1

整数类型

byte                    1个字节

short                  2个字节

int                       4个字节(最常用的整数类型)

long                    8个字节

如果我们定义了一个byte类型的变量,约束了类型是整数,这个整数的范围是-128到127

小数类型

float

double

小数的类型的数据的存储方式和整数不一样。

float -3.403*1038 -------3.403*1038

小数类型表示的数据范围要比整数的最大范围大。

字符类型

char          2个字节

需要使用         ’’

布尔类型         2个字节

boolean                      true           false                           

布尔类型就有2个值

字节:

1

1

1

1

1

1

1

1

整数类型

byte                    1个字节

short                  2个字节

int                       4个字节(最常用的整数类型)

long                    8个字节

如果我们定义了一个byte类型的变量,约束了类型是整数,这个整数的范围是-128到127

 

小数类型

float

double

小数的类型的数据的存储方式和整数不一样。

float -3.403*1038 -------3.403*1038

小数类型表示的数据范围要比整数的最大范围大。

字符类型

char          2个字节

需要使用         ’’

布尔类型         2个字节

boolean                      true           false                           

布尔类型就有2个值

3.变量的定义

对变量的操作:存储值和取值

语法:数据类型     变量名字 = 初始值;

等号(=):赋值。

变量的定义位置:定义在方法中或者语句块中。

                                     变量的定义必须要有初始值,后续我们会学习到类的属性的概念(不需要初始化)

变量的使用范围:

变量只能在当前的大括号和当前的大括号的子括号内使用。

基本数据类型初始值
byte0
short0
int0
long0
float0.0
double0.0
char

' '

booleanfalse

4.数据类型的转换

八种数据类型除了boolean类型以外都能转换。

1.自动转换

变量在做计算的时候可能溢出的情况,那么java语言采用自动类型转换的方式来处理。

小的空间的数据类型和大空间的数据类型的数计算会向大的空间的数据类型去转换。

byte、short、char在做计算的时候会自动的提升数据类型成int

int和其他的数值计算也会溢出,int不会提升而是直接损失精度

0111 1111   1111 1111  1111 1111   1111 1111 

1000 0000        00000000  0000 0000   0000 0000

任何的整数类型和long类型做运算都会转换成long类型。

2.强制转换

大空间的数据类型向小空间的数据类型去转换。

语法:(目标数据类型)变量名

Int类型的8                                       0000000 0000000 0000000 0001000

short类型的8                                                                  0000000 0001000

byte类型的8                                                                                      0001000

5.运算符

1.算数运算符

四则运算

+、-、*、/ %

自增

自减

class Demo9{
	public static void main(String[] args){
		int a = 10;
		int b = 3;
		//加法30
		int c = a + b;
		System.out.println("a+b="+c);
		//-10
		int d = a - b;
		System.out.println("a-b="+d);
		//200
		int e = a * b;
		System.out.println("a*b="+e);
		//3,取整
		int f = a / b;
		System.out.println("a/b="+f);
		//取余数  1
		int g = a % b;
System.out.println("a%b="+g);
		
		
		/**
		 *后++ --
		 */
		int i = 1;
		//把变量的值做加一
		i++;
		System.out.println("后加加后:"+i);
		
		int i1 = 4;
		//把变量的值减一
		i1--;
		System.out.println("后减减后:"+i1);
		
		/**
		 *前++ --
		 */
		int i2 = 1;
		//把变量的值做加一
		++i2;
		System.out.println("前加加后:"+i2);
		
		int i3 = 4;
		//把变量的值减一
		--i3;
		System.out.println("前减减后:"+i3);
		
		///
		int i4 = 10;
		//当后加加和减减和其他代码在一行的时候先使用加加和减减之前的值, 如果不在同一行,后面的一行就会得到加加或减减后的值
		System.out.println("同一行中后加加:"+(i4++));
		System.out.println(i4);
		//System.out.println("同一行中后加加:"+(i4--));
		
		int i5 = 20;
		//前加加和减减就是先做加一或减一再使用变量
		//System.out.println("同一行前加加:"+(++i5));
		System.out.println("同一行前减减:"+(--i5));
		System.out.println(i5);
	}
}

2.赋值运算符

=,+=,-=,*=,/=, %=

= 赋值

class Demo10{
	
	
	
	public static void main(String[] args){
		
		int a = 10;
		//相当于a = a + 5
		a += 5;
		System.out.println(a);
		
		int b = 20;
		//相当于b = b - 10;
		b -= 10;
		System.out.println(b);
		
		int c = 5;
		//相当于c = c*2
		c *= 2;
		System.out.println(c);
		
		int d = 8;
		//相当于d = d/2;
		d /= 2;
		System.out.println(d);
		
		int e = 10;
		//相当于e = e%3;
		e %= 3;
		System.out.println(e);
	}
}

 

3.比较运算符

==,!=, >, >=, <, <=

== 判断双等号两边是否相等

class Demo11{
	
	
	
	public static void main(String[] args){
		
		int a = 20;
		int b = 20;
		//判断a和b是否相等,如果相等是true,不等是false
		//boolean isTrue = (a == b);
		System.out.println(a == b);
		
		//boolean isTrue1 = (a != b);
		//判断a和b是否相等,如果相等是false,不等是true
		System.out.println(a != b);
		//如果a大于b就是true
		System.out.println(a > b);
		//如果a大于等于b是true否则就是false
		System.out.println(a >= b);
		
		//如果a小于b就是true
		System.out.println(a < b);
		//如果a小于等于b是true否则就是false
		System.out.println(a <= b);
		
	}
}

 

4.逻辑运算符

&,|,^, &&, ||,!

&:当多个表达式进行运算的时候,只有所有的表达式计算结果都是true整体的结果才是true

class Demo12{
	public static void main(String[] args){
		
		int java = 80;
		int sql = 19;
		//判断两门考试都大于60分是及格,只要有一个表达式是false那么整体就是false,但是&不管第一个表达式是不是false,所有的表达式会全部执行
		//System.out.println((java > 60)&(sql > 60));
		//System.out.println((java > 60)&(++sql > 60));
		//System.out.println(sql);
		
		//判断两门课程如果有一门课程或者一门以上及格就算你通过
		//只要有一个表达式是true那么整体就是true,但是|不管第一个表达式是不是true,所有的表达式会全部执行
		//System.out.println((java > 60)|(++sql > 60));
		//System.out.println(sql);
		
		//System.out.println((java > 60)&&(++sql > 60));
		//System.out.println(sql);
		
		
		System.out.println((java > 60)||(++sql > 60));
		System.out.println(sql);
		//把结果取反
		System.out.println(!(java>60));
	}
}

 

5.位运算符

<<     >>  >>>  &  |  ^

<<:将参与运算的二进制数据向左移动,在低位产生的空位用0来做补齐。

0

0

0

0

1

0

0

0

 

 

>>将参与运算的二进制数据向右移动,在高位产生的空位如果高位是0那么就用0来做补齐,如果高位是1就用1来补齐。也就是说右移是带着符号位移动

0

0

0

0

0

0

1

1

右移3位

0

0

0

0

0

0

0

0

 

计算机中所有的二进制运算都是用的补码

原码                            反码                                     补码

正数(3)                0000 0011                  0000 0011                           0000 0011

负数(-3)               1000 0011                  1111 1100                           1111 1101

5.位运算符

<<     >>  >>>  &  |  ^

<<:将参与运算的二进制数据向左移动,在低位产生的空位用0来做补齐。

0

0

0

0

1

0

0

0

 

 

>>将参与运算的二进制数据向右移动,在高位产生的空位如果高位是0那么就用0来做补齐,如果高位是1就用1来补齐。也就是说右移是带着符号位移动

0

0

0

0

0

0

1

1

右移3位

0

0

0

0

0

0

0

0

计算机中所有的二进制运算都是用的补码

原码                            反码                                     补码

正数(3)                0000 0011                  0000 0011                           0000 0011

负数(-3)               1000 0011                  1111 1100                           1111 1101

0000 0011

+1111 1101

---------------------------

0000 0000

1

1

1

1

1

1

1

1

>>>:无符号右移,将参与运算的数据向右移动,在高位所产生的空位0补齐

1

1

1

1

1

1

0

1

1111 1111  1111 1111  1111 1111  1111 1101

0001 1111  1111 1111  1111 1111  1111 1111

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值