2020/3/2学习笔记-day09

java-day9

目录

java-day9

早上

第一节课

类中的非静态方法都可以访问类中的实例变量

第二节课

操作符(下面的$为%)

 1、赋值操作符

= 最基础的赋值操作

*=一个变量和另外一个数据相乘,并把结果赋值给这个变量

/=一个变量和另外一个数据相除,并把结果赋值给这个变量

%=一个变量和另外一个数据相余,并把结果赋值给这个变量

+=一个变量和另外一个数据相加,并把结果赋值给这个变量

+=一个变量和另外一个数据相加,并把结果赋值给这个变量

 2、比较操作符

第三节课

instanceof:判断一个指定对象,是否属于一个指定的类型

 相等操作符

下午

第一节课

算术操作符

思考1:1和“1”在java中的区别

思考2:1如何转换为“1”?

思考3:“1”如何转换为1?

第二节课

-

*

/

%

自增和自减操作:++ --

第三节课

++操作还分为a++和++a

移位操作符

逻辑右移位运算 >>>【不带符号】


早上

第一节课

类中的静态变量是属于类的,可以通过类名.来调用
​
实例变量是属于对象的,通过对象.来调用

类中的非静态方法都可以访问类中的实例变量

public class Student{
    private String name;//实例变量
    public void test1(){
        System.out.println(this.name);//调用实例变量
    }
    public void test2(){
        System.out.println(this.name);
    }
    
    public void test3(){
        int a=1;//局部变量
        System.out.println(a);//调用局部变量
    }
}

第二节课

操作符(下面的$为%)

 1、赋值操作符

= 最基础的赋值操作

如:int a=1; int x=0;

*=一个变量和另外一个数据相乘,并把结果赋值给这个变量

如:int a=1;a*=2;//a=a*2;

/=一个变量和另外一个数据相除,并把结果赋值给这个变量

如:int a=6;a/=2;//a=a/2;

%=一个变量和另外一个数据相余,并把结果赋值给这个变量

如:int a=5;a%=2;//a=a%2;

+=一个变量和另外一个数据相加,并把结果赋值给这个变量

如:int a=5;a+=2;//a=a+2;

+=一个变量和另外一个数据相加,并把结果赋值给这个变量

如:int a=5;a-=2;//a=a-2;

 2、比较操作符

注意:比较操作符的结果是boolean类型

>   如:int a=1;int b=2;
       boolean result= a>b;
       System.out.println(result);
​
>=  如:int a=1;int b=2;
       boolean result= a>=b;
       System.out.println(result);
​
<   如:int a=1;int b=2;
       boolean result= a<b;
       System.out.println(result);
​
<=  如:int a=1;int b=2;
       boolean result= a<=b;
       System.out.println(result);

第三节课

类中的非静态方法和非静态属性都是必须使用类中的对象进行访问

类中的静态方法和静态属性都可以使用类名进行访问

char类型也可以进行比较,比较的是字符编码后的数据大小

 但是boolean类型不能比较会报错

 

和对象相关的比较操作符

instanceof:判断一个指定对象,是否属于一个指定的类型

Student s == new Student();
​
boolean result;
​
result = (s instanceof Student);
​
result = (s instanceof Object);

  

注意:一个java对象,一定是使用了java中某一个确定的类型来创建出来的我们就可以是这个对象a属于这个类型x,但是java中的类型并不是一个单一的对象,类和类之间具有继承或实现的关系。

在做一个对象的类型强制转换的时候,可以使用instanceof关键在,来判断一下 这个对象是否属于接来下要做强制转换的那个类型,然后返回true,则说明我们 接下来是可以做类型强制转换的,如果返回false,则说明接下来不能做类型强制 转换。

 相等操作符

== 比较两边的数据是否相等

!= 比较两边的数据是否相等

使用:

比较基本类型数据(八种)是否相等

比较引用类型数据(对象)是否相等



 

下午

第一节课

算术操作符

+

//数字之间是有+,表示两个值相加
int a = 1+2
double b = 1+2
​
//字符之间使用+,表示俩个字符进行编码后的值相加
char c1 ='a';//97
char c2 = 'a';//97
int result = C1+C2;
System. out. print1n( result);//194
​
//字符串之间使用+,表示俩个字符串拼接
//注意,也可以使用+=
//例如:
String result;
result = "hello"+"world";
result += "tom"; // result = result +”tom";
String s1 = "hello";
String s2 = "\n";
String s3 = "world";
result = s1+s2+s3;
​
//字符串和基本类型数据直接使用+,结果都会变成字符串类型
String result;
byte    a1 = 1;
short   a2 = 2;
int     a3 = 3;
1ong    a4 = 4L;
float   a5 = 5.0F;
double  a6 = 6.0D;
char    a7 = 'a';
boolean a8 = true;
​
result = str + a1;//"he11o 1" 
result = str + a2;//"hello 2"
result = str + a3;//"hello 3"
result = str + a4;//"he1lo 4"
result = str + a5;//"he1lo 5.0"
result = str + a6;//"hello 6.0"
result = str + a7;//"he1lo a"
result = str + a8;//"he1lo true'
System.out.println(result);
​

思考1:1和“1”在java中的区别

在没有主动声明数据类型的情况,1在java中默认是int类型的,而“1”是String类型。

思考2:1如何转换为“1”?

int a = 1;
String str = a + "";//"1"

思考3:“1”如何转换为1?

int a = Integer.parseInt("1");

第二节课

-

//两个数字相减
int a=2;
int b=1;
int c=a+b;

*

//两个数字相乘
int a=2;
int b=1;
int c=a*b;

/

//两个数字相除
int a=2;
int b=1;
int c=a/b;
/**
    注意:
两个数据都是int类型(整型),这里除是整除的意思
得到的结果只要整数部分,不要小数。
*/
double a=5/2;   //2.0  
double a1=5/2.0; //2.4

%

//两个数字求余
int a=2;
int b=1;
int c=a%b;

自增和自减操作:++ --

++

int a = 1;
a+=1;//---->简写为a++
​
//特殊情况:
byte a=1;
a=a+1;//编译报错 a+1的结果是32位的int
​
​
byte a=1;
a+=1;//编译通过
​
byte a=1;
a++;//编译通过
​
byte a=127;
a++;//编译通过  
System.out.println(a);//-128
/*
127的byte类型二进制:0111 1111
0111 1111 + 1 = 1000 0000(表示-128)
其实这个操作应该是127+1=128,然后从byte转为int类型
就是正常的128,由于++和+=操作的特殊性,导致加完以后没
有转换类型,结果还是byte就出现了这种情况。
*/

第三节课

++操作还分为a++和++a

共同之处:都是让a自增1

不同之处:一个先取值再加1,一个先加1再取值

 

-- 的相关特点和上面的++是类似的。

移位操作符

>> 算术右移运算,也叫做带符号右移运算【带符号】
   int a1=12>>1;
   0000 1100 >>1
   0000 0110-->【6】
   
   int a2=-12>>1;
   1111 0100 >> 1
    1111 0100移动出的1位直接去掉
    1111 010 最后变为.
   11111 010 补位
   1111 1010 调整一下
   
   0000 0101(取反)
  +
   0000 0001(+1)
  -----------
   0000 0110 ---->6  所以结果为-6
   
  注意,这个操作的本质就是除以2^N,这个N就是我们右移的位数。
  除完2^N之后,只保留整数部分。
  正数右移之后,最左边补0
  负数右移之后,最左边补1
​
<< 算术左移运算,也叫做带符号右移运算
   int a1=12<<1;
   0000 1100 <<1
   0001 1000(补位,不分正负,最右边全补0)
   【24】
  注意,这个操作的本质就是乘以2^N,这个N就是我们左移的位数。
  无论正/负数,左移后,最右边一律补0
  【特殊情况】  
  左移之后,得到数字已经超出当前类型所能显示的值,这个值
  会被限定到当前类型中,最终显示的值会和我们逻辑计算不同。
​


特殊情况

 

逻辑右移位运算 >>>【不带符号】

int a1=12,result;
result=a1>>>1;//【6】
/*
注意,这个操作的本质就是除以2^N,这个N就是我们右移的位数。
除完2^N之后,只保留整数部分。
正数和负数右移之后,最左边空出的位置都要补0
*/
int a2=-12,result;
result=a2>>>1;//【2147483642】
​
1111 0100 【-12】
0111 1010

发布了82 篇原创文章 · 获赞 52 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/iostream992/article/details/104608918