day 03
一、补充变量:
-
- 变量能不能一行定义多个
-
- 怎样定义才能不报错
class Demo1{
public static void main(String[] args){
//int a , b , c = 10;
//int a = 10,b = 20,c = 30;
/*
int a, b, c;
a = 100;
b = 200;
c = 300;
*/
//int a , b , c = 20 , 30 , 40; 这种是错误演示
int a = 200;
a = 100; //变量再赋值
System.out.println(a);
}
}
变量的访问原则:就近原则
- 首先在自己的作用域中找该变量,若有,则进行引用;
- 若没有,则去类作用域里面继续找该变量,若有,则引用;
- 如果都没有找到,则报错——>找不到标识符。
class Demo2{
static int a = 100;
public static void main(String[] args){
//double a = 200.3;
System.out.println(a);
}
}
二、运算符
1.算术运算符(遵循四则运算)
+ - * / %
-
整数和整数运算得到的还是整数
-
整数的除法对于除数为0时运行时会报错,但编译不会报错
-
加号的用法
- 进行加法运算
- 表示正数
- 连接字符串
[ 字符串不管与任何类型进行相加操作其结果都是字符串 ]
class Demo3{
public static void main(String[] args){
String name = "大哥";
String sex = "未知";
int age = 18;
System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
/*
字符串和任意类型做加法操作都是将值拼接到字符串后面或者前面
运算过后的新的数据,类型依然是字符串
*/
}
}
- 减号的用法
- 进行减法运算
- 表示负数
- 乘号的用法
- 进行乘法运算
- 除号的用法
- 进行除法运算
class Demo4{
public static void main(String[] args){
int a = 30;
String ss = "=";
int b = 10;
int c = 20;
int d = 3;
System.out.println(a+ss+b+"+"+c);//30 = 10 + 20;
int e = b - c;
System.out.println(e);//-10
double dou = 3.3;
System.out.println(b * dou);//33.0
//当小类型和大类型做运算的时候 小类型会自动提升为大类型 那么运算后的结果也是大类型
System.out.println(a / b);//3
System.out.println(1.0 * b / d);//3.333333
}
}
- 取余(模与运算、取余运算)
class Demo5{
public static void main(String[] arge){
int a = 10;
int b = 3;
System.out.println(a % b);
}
}
自增和自减:++ –
-
++:自增符号,在原来数据的基础上自动+1
-
--:自减符号,在原来数据的基础上自动-1
-
单独使用时没有区别,都是+1或-1操作
a++;
b--;
++c;
--d;
- 参与运算时
前加(减):先加(减)一,后运算
后加(减):先运算,后加(减)一
常见的运算:赋值;打印;小括号
class Demo6{
public static void main(String[] args){
int a = 10;
int b = 10;
int c = 10;
a = b++;//a=10 b=11
c = --a;//a=9 c=9
b = ++a;//b=10 a=10 c=9
a = c--;//a=9 b=10 c=8
int a = 4;
int b = (a++)+(++a)+(a*10);
//4 6 60
}
}
2.赋值运算符
*= += -= = /= %=
- 包含一个默认的强制类型转换
- 其中”=“是基本的赋值运算符,其他都为扩展的赋值运算符
- 将”=“右边的值赋值给左边的变量
a+=b 相当于 a=a+b;
a-=b 相当于 a=a-b;
a* =b 相当于 a=a*b;
a/=b 相当于 a=a/b;
a%=b 相当于 a=a%b;
class Demo7{
public static void main(String[] args){
byte b = 10;
byte a = 20;
//a = a + b; //报错,类型不匹配
//byte a = (byte)(a + b);
a += b;
System.out.println(a);
}
}
总结:赋值运算符能够帮助我们规避掉类型不匹配的异常,越过类型检测机制,做自动求和操作
3.关系运算符
- 得到的结果都是布尔类型的值
- ==:判断左右两边是否相等
- 注意事项:千万不能写成 = ,他们两个没有任何联系
- != :判断左右两边是否不相等
- 如果左右两边相同,返回false
- 如果左右两边不同,返回true
- <或者<= :判断左边是否小于等于右边
- 如果左边小于右边,那么返回值为true
- 如果左边大于右边,那么返回值为false
- > 或者>=:判断左边是否大于等于右边
- 如果左边大于右边,那么返回值为true
- 如果左边小于右边,那么返回值为false
- instanceof :检查是否是该类的一个实例,只能用于引用数据类型
class Demo8{
public static void main(String[] args){
int a = 10;
int b = 20;
System.out.println(a == b);//false
boolean c = (a != b);
System.out.println(c);//true
System.out.println(a > b);//false
System.out.println(a < b);//true
int a = 5;
int b = 3;
System.out.println(a==b);//false
System.out.println(a=b);//3
int x = 10;
int y = 10;
boolean flag = (x == y);
//boolean flag1 = (x = y);//报错,类型不匹配
System.out.println(flag);//true
boolean b1 = true;
boolean b2 = false;
boolean b3 = (b1 == b2);
boolean b4 = (b1 = b2);
System.out.println(b3);//false
System.out.println(b4);//false
}
}
4.逻辑运算符
- 运算符左右两边连接的要么是两个boolean值,要么是两个能够得到boolean值得表达式(关系表达式)
&|^! 的基本用法
优先级:& ^ |
-
&:与符号(and)
- 两边都是true,结果才为true,只要&两边出现一个false,那么结果就位false
-
| :或符号(or)
- 两边都是false,结果才是false,两天只要有一个为true,那么结果就是true
-
^ :异或符号(xor)
-
两边boolean值相同的情况下,结果为false
两边boolean值不同的情况下,结果为true
-
-
! :非符号(not)
- !true表示false
- !false表示true
class Demo9{
public static void main(String[]args){
boolean a = true;
boolean b = false;
System.out.println(a&b);//false
System.out.println(a|b);//true
System.out.println(a^b);//true
System.out.println(!(a&b));//true
System.out.println((2>3)|(4!=3));// true
System.out.println((2!=3)^(4<=3));//true
System.out.println((2>=1)&(4!=3));//true
System.out.println((2>=1)&(4!=3)|(2>=1)^(4!=3));//true&true|true^true true
}
}
短路运算符**
- && :双与或者叫做短路与(and)
- 两边都是true,结果才为true
- &&一旦判断出符号左边的表达式结果为false,那么就不再去执行右边的表达式
- || :双或或者叫做短路或(or)
- 两边都为false,结果才为false
- ||一旦判断出符号左边的表达式结果为true,那么就不再去执行右边的表达式
public class Demo10 {
public static void main(String[] args) {
int a=20;
int b=30;
int c=40;
System.out.println((a++>b)&&(b++<c));//false&&true
System.out.println(a);
System.out.println(b);
System.out.println((a++<b)&&(b++<c));//true&&true
System.out.println(a);
System.out.println(b);
System.out.println((a++<b)||(b++>c));//true||flase
System.out.println(a);
System.out.println(b);
System.out.println((a++>b)||(b++>c));//false||false
System.out.println(a);
System.out.println(b);
}
}
&^| 连接数字
- & ^ | 连接整数, 需要把整数转成二进制的补码,逐位进行运算,把0当成false,把1当成true
- ~ 逐位取反
public class Demo11{
public static void main(String[] args) {
int a=50;
int b=66;
System.out.println(a&b);
System.out.println(a|b);
System.out.println(a^b^b);//一个数字异或另一个数字两次,得到的还是它本身
}
}
5.位运算符
-
>>:右移符号
- 将值转为二进制以后,开始移位
- 如果高位为0,那么移位以后的空位补0
- 如果高位为1,那么移位以后的空位补1
- 将值转为二进制以后,开始移位
-
<<:左移符号
- 将值转为二进制以后,开始左移,空位补0
-
>>>:无符号右移
- 将值转为二进制以后,开始移位,不管高位是0还是1,都补0
总结:向右移几位,就是除以2的几次方
向左移几位,就是乘以2的几次方
6.三目运算符(三元运算符)
(关系表达式)? 表达式1:表达式2;
- 如果关系表达式结果为true,那么就执行表达式1
- 如果关系表达式结果为false,那么就执行表达式2
- 表达式1和表达式2的最终结果是一个明确的答案值
public class Demo12{
public static void main(String[] args) {
int N = 100;
int S;
S= ((1 + N) * N) / 2;
System.out.println("S=" + S);//S=5050
System.out.println(S == 5050 ? "测试通过" : "测试失败");//测试通过
}
}
7.eclipse
- 下载地址(官网):http://www.eclipse.org/downloads/packages/
我们需要下载的版本是Eclipse IDE for Java Developers;
根据操作系统是Windows、Mac还是Linux,从右边选择对应的下载链接。
- 配置
下载并安装完成后,我们启动Eclipse,对环境做一个基本配置:
选择菜单“Window”——“Preferences”,打开配置对话框:
General>Appearance
“Theme”,我们可以进行选择界面显示。例如light,dark等。
General>Appearance>Colors and Fonts
“Basic”,可以进行选择字体。
General > Workspace
“Text file encoding”,如果Default不是UTF-8
,一定要改为“Other:UTF-8”,所有文本文件均使用UTF-8
编码;
“New text file line delimiter”,建议使用Unix,即换行符使用\n
而不是Windows的\r\n
。
General > Editors > Text Editors
钩上“Show line numbers”,这样编辑器会显示行号。
-
创建项目并运行
- 新建一个工程(项目):Flie->new->java project
- 创建包: src右键-> new-> package
- 创建类: 创建好的包 右键->new ->class
- 写代码
- 运行代码:点击运行按钮 或者 右键-> run as -> java application
-
快捷键
eclipse万能快捷键:alt + /
整理代码格式:ctrl + shift + f
自动导包:ctrl + shift + o
快速复制粘贴:ctrl + alt + ↑/↓
快速移动某行代码:alt + ↑/↓
单行注释:ctrl + /
多行注释:选中一段代码 然后ctrl + shift + / 添加多行注释
选中一段代码 然后 ctrl + shift + \ 去除多行注释
快速生成返回值:ctrl + 2 然后松开,再按L,光标一定要在最后
快速修订一片代码:alt + shift + a 再按退出
删除一行代码:ctrl + d
public class Demo13 {
public static void main(String[] args) {
/*
* alt + / 万能快捷键
*
* syso --> alt + / 自动生成打印行
*/
System.out.println("Hello world!");
}
}