day03java笔记(面向对象 变量 操作符)

面向对象编程开发方法

把软件系统看成各种对象的集合,对象就是最小的子系统,接近人的思维
类  具有相同属性和行为抽象出来的模板
对象就是类的具体化,通过new				
对象是唯一的
创建people

面向对象的编程步骤

1先创建类class 
people
2创建对象 
通过new
3操作对象的行为
p.display()
4.测试

实例代码

package com.briup.day03;
public class  PeopleTest
{
	public static void main(String[] args) {
	People p1=new People();

	p1.display();
}
}

package com.briup.day03;
public class People
{
public int id;
public String name;
public void display(){
	System.out.println("我是人");
}
}//先编译

运行时数据

一个完整的java代码运行时数据会保存在内存的不同区域

方法区、代码区:存放类的信息
栈区,存放局部变量,每个线程都有自己的栈
1用来保存基本数据类型的值
2保存类的实例,即堆区对象的引用
堆区:存放动态数据,由new所产生的数据
常量池:存放常量。常量池就是用到常量的一个集合,也是在堆区存放
pc寄存器;存放下一条要执行的指令

nwe操作在内存分配做了哪些操作

1在栈区开辟空间保存的对象的引用
2在堆区开辟空间保存对象
2将堆区的地址赋值给栈区对象的引用,引用对应的是:地址

基本数据类型变量

由基本数据类型修饰的变量
赋值时,直接赋值
内存中保存数据:栈区保存数值
引用数据类型变量
由引用数据类型修饰的变量
赋值时:使用new关键字
内存保存数据,在栈区保存对象的地址值,堆区保存对象本身的值

1实例变量和局部变量
变量:先声明后赋值
局部变量

位置:放在方法的参数列表中或者方法的{}中
作用域:从变量定义的地方到方法结束的地方有效
生命周期:从变量定义的地方到方法结束的地方结束
在内存中存放的位置:存在栈区

实例变量

位置:放在类里面,方法外面
作用域:在整个类中有效
生命周期:从对象的创建开始,到gc回收
在内存中存放的位置:存在堆区
默认会给默认值,整型0 浮点为0.0,布尔类型false ,引用类型null
byte short int long float double char  	     boolean   All reference types  
 0         0       0   0L    0.0f    0.0d   ‘\u0000’      false                     null

操作符

1算数操作符+ - /*% n
主要针对基本数据类型的数据
+还可以用于字符串的拼接
int a=10,int b=20;int c=a/b=0;int c=a%b=10

2赋值操作符
int a=10;
a=a+20;
+=,-=,*=,/=
a+=20;

a+=b 做了一个隐式转换数据类型,向等号左边数据类型进行转换
a+=b,等价于a=(左边的数据类型)(a+b);
short a=0;
int b=123456;
a=a+b

3比较操作符 结果true false

=< <
instanceof 判断一个引用类型的对象是否是类的实例
obect 超类。(所有类的父类)

4等操作符—true/false

"==!="
equals

比较基本数据类型的数据
比较引用数据类型的数据
==比较的是对象的地址是否相同,比较的是栈区
equals ()方法,对象调用
他是属于Object类的,比较的也是地址值,但后期可以自己制定规则
`int a=20  int b=10;       
string s1="hello";
string s2="hello"
string s3=new string("hello");     (有几个对象  1个或2个  如果常量池创建过hello 就是一个`S3  如果没有就是两个  )
`string s4=new string("hello");

位移操作符

有符号位右移,最高位补符号位。(高位负数补1正数补0)低位抛弃

无符号右移,最高位补0
<<无符号左移,最低位补0
10>>2-------2 10有符号的右移两位
10的二进制为 0000…1010 去掉后两位
0000…0010转换为10进制为2
10>>>2-----2
0000.0010 把1变成0
10<<2------40
0000…1010
000.101000转换为二进制为40
-10>>2------- -3
0000…1010 取反加1
1111…0101 取反
1111…0110 加1
右移两位 1111…1101 然后减一取反
1111…1100 减一
1000…0011 取反 符号位不变
-10>>>2---- 1073741821
0000…1010 取反加1
1111…0101 取反
1111…0110 加1
右移
0011…1101

位操作符-针对二进制

&与 0&0=0 0&1=0 1&1=1 两个二级制位均为1,结果为1,否则为0
|或 0|0=0 0|1=1 1|1=1 两个二进制均为0,结果为0,否则为1
^异或 0^0=0 0^1=1 1^1=0 两个二进制位不同,结果为1,相同则为0
-取反 -0=1 -1=0 取反,结果与原来二进制位相反,1变0 0变成1

8&2----》0
8的二进制 0000…1000&
2的二进制 0000…0010
0000…0000
8|2—》10
0000…1000 |
0000…0010
0000…1010
8^2----》10
0000…1000^
0000…0010
0000…1010
~10----》-11
0000…1010
1111…0101
当值比较大的时候减一取反符号位不变
1000…1011

1.输出任意int类型的二进制

11
0000…1011
代码

out(d);
}
//输出十进制对应的二进制
public static void out(int num){
   System.out.println(num+"的二进制是\t");
   for(int i=31;i>=0;i--){
     System.out.print(num>>i&1);
   }
   System.out.println();
}

2.将任意int类型的数据的任意位置置1
10 第3位为1
0000…01010 |
0000…00100 需要这种情况 &与 两个不为就为0

0000…01110得到的结果

0000…00100 1<<2 0000…10000
num|(1<<(position-1)) position传过来要置换为1的值

代码

	out(10);
	int c=bitSet(-10,3);
	  out(c);
	  //将任意int类型的数据的任意位置置1
	public static int bitSet(int num,int position){
	  return num|(1<<(position-1));

3.将任意int类型的数据的任意位置置0

10 2
0000…01010&
1111…11101 需要这种情况

0000…01000得到的结果

1111…11101
~(1<<1)
00000…001 1的二进制
00000…010 1<<1
num&(~(1<<(position-1)))

代码
  int d=bitZero(10,2);
	  out(d);、
public static int bitZero(int num,int position){
	  return num & ~(1<<(position-1));

4.将任意int类型的数据的任意位置置反
?三目运算符
三目运算符的使用方法:根据?前面的条件判断进行排序。
如果为true 整个表达式的结果:前面的部分
如果为false 整个表达式结果为后面的部分
(条件要怎么写才能满足想要的情况)

int a=10;  int b=20  int c=a>b?a:b;
if (a>b){
syso(a);
}else{
syso(b);
}

逻辑操作符的结果true或者false

&&:有一个条件为假,结果为假
||:有一个条件为真,结果为真

int a=20 int b=30
a>b&&a+20>b false

a>b||a+20>b

if(a>b&&(a+=20)>b)

& | 也可以做逻辑操作符

&&和||具有逻辑短路的功能,就是不走了

a++ ++a a-- --a
a++等价于a=a+1;
int a=20;
int b=a++ a=21 b=20先赋值后运算
int b=++a a=21 b=21先运算后赋值算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值