java语言基础

一、java环境安装

1、参考如下

https://blog.csdn.net/mxdon_on/article/details/89461365?ops_request_misc=&request_id=&biz_id=102&utm_term=java%25E7%258E%25AF%25E5%25A2%2583%25E5%258F%2598%25E9%2587%258F%25E9%2585%258D%25E7%25BD%25AE&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-89461365.nonecase

2、编译器使用 IDEA 参考如下

https://blog.csdn.net/ysj4428/article/details/81561759?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161025790416780265474933%252522%25252C%252522scm%252522%25253A%25252220140713.130102334..%252522%25257D&request_id=161025790416780265474933&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-81561759.pc_search_result_no_baidu_js&utm_term=IDEA%20%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8

二、java代码注释

1、单行注释
2、多行注释
3、文档注释
在这里插入图片描述

public class a {
    public static void main(String[] args) {
       int a[]={1,23,5};//声明数组(单行注释)
       System.out.println(a.length);
       /*
       定义数组
       打印数组长度
        */
       System.out.println(a[0]);
       /** 抚琴*/


    }
}

三、 变量与常量

1、标识符
定义:可以理解为一个名字,用来标识类名,变量名,方法名,组名等

public class a {
    public static void main(String[] args) {
       int a[]={1,23,5};//a为数组名

命名规则:任意字母、下划线、$、和数字组成
2、关键字
定义:java内部已经赋予的一些单词 如:

		public class	

3、变量
定义:在程序运行过程中,空间内的值是变化的。这个内存空间就称为变量,为了便于操作,给这段空间取个名字成为变量。

	   int x = 30;
       int y ;
       /*
       x,y成为变量
        */

4、常量
定义:在程序运行中一直不会改变的量成为常量,通常称为 final 变量

	final double PI = 3.14;

四、基本数据类型

在这里插入图片描述

1、整数类型
byte:1字节8位 -128——127
short:2字节16位 -32768——32767
int:4字节32位 -2147483648——2147483647
long:8字节64位 -9223372036854775808—— 9223372036854775807
(一)int 型

	   int x;
       int y;
       int z,c;
       int p = 100;

(二)byte 、short、long 如上注意:定义时不要超过上面的范围

  2、浮点类型
  float:4字节 32位 1.E-45——3.4028235E38
  double:8字节 64位 4.9E-324 ——1.7976931348623157E308
  声明浮点类型代码如下:
 	   float ss = 12.22f;
       double dd = 888.12d;

3、字符类型
char:用于储存单个字符,占用16位的内存空间声明如下:

char a = 'aa';

4、转义字符

在这里插入图片描述

从上到下依次为(转义字符意义ASCII码值(十进制))
\a
响铃(BEL)
007
\b
退格(BS) ,将当前位置移到前一列
008
\f
换页(FF),将当前位置移到下页开头
012
\n
换行(LF) ,将当前位置移到下一行开头
010
\r
回车(CR) ,将当前位置移到本行开头
013
\t
水平制表(HT) (跳到下一个TAB位置)
009
\v
垂直制表(VT)011
\\
代表一个反斜线字符''\'
092
\'
代表一个单引号(撇号)字符
039
\"
代表一个双引号字符
034
\0
空字符(NULL)
000
\ddd
1到3位八进制数所代表的任意字符
三位八进制
\xhh
1到2位十六进制所代表的任意字符
二位十六进制

4、布尔类型 只有true和false

public class a {
    public static void main(String[] args) {
        boolean a = 2 < 3;
        boolean b =  2 >3;
        System.out.println(a);
        System.out.println(b);

    }
}

在这里插入图片描述

五、Java中的数据类型转换

数据类型转换分为两种:
自动类型转换,也称为隐型转换
强制类型转换,也成为显示转换
自动类型转换
当将某数据类型的值赋值给某个能够表示更大范围的数据类型的变量时,会发生自动类型转换,比如

byte b = 20;
	int a = b;

上面的b是byte类型,a是int类型,int类型的范围更加的大,所以将b赋值给a时会自动类型转换,将20转化为int类型赋值给a,但是b还是byte类型。但是不能将大范围的数据类型的值赋值给更小范围数据类型的变量,如

int a = 20;
byte b = a; //不行,编译器会报错

范围从小到大的顺序为
箭头代表可以转换。
在前面我们提及到,当将一个整数赋值给long类型的变量时,如果表示的范围没有超过int,那么可以不写后面的L,这时因为发生了自动类型转换

long l = 12; //后面没有加L,Java默认整数类型为int,这里发生了自动类型转换
	

强制类型转换
上面提及到大范围不能转向小范围,但是我们可以强行转换,比如我想将int类型的数值转化为byte类型的数值

int a = 20;
byte b = (byte) a;

在要转换的数据前面加上(byte)就可以强行转化为byte类型。
虽然可以将大范围转化为小范围,但是我们在平常时不会这么干,因为往往将大范围的数转化为小范围的数时,会有精度损失,比如:

double d = 3.5;
int i = (int) d; //结果为3,小数点后面的数直接舍去,并不是四舍五入

我们知道Java的整数默认为int,那么下面的语句为什么没有报错

byte b = 20; //20是int类型,int不能转byte,为什么没有报错
short s = 30; //同上
```	这是因为,在编译时,编译器会检查右边数值的范围,如果没有超过byte或者short能够表示的大小,那么编译器会自动帮我们强制类型转换为byte或short,相当于
	
```c
byte b = (byte) 20;
short s = (short) 30;

几点注意
char,short,byte类型在进行计算时,会自动提升为int类型参与计算

byte num1 = 10;
byte num2 = 20;
//下面这行语句会报错
byte num3 = num1 + num2; //在计算时,num1和num2会自动的提升为int类型,而int类型不能转为byte,所以会报错

但是,下面的写法是正确的

byte b = 1 + 2;

当右边全是常量时,编译器在编译时会直接计算,相当于下面

byte b = 3;

由于3没有超出byte能够表示的范围,所以会被强制转换为byte。

char c = 'A';
//下面这行语句会输出一个数字
System.out.println(c + 0); //65

我们知道char是一个字符,那么为什么字符可以进行计算呢?这是因为计算机在底层是使用数字表示字符的,比如上面’A’就是使用数字65表示的,上面的字符与数字0进行计算,会自动提升为int类型,所以最后输出的就是数字。

我们需要知道几个特殊字符对应的数字
字符	ASCII码
'0'	48
'A'	65
'a'	97
大写字母与小写字母之间差32。
boolean类型不能进行数据类型转换
例如,下面将对boolean类型进行转换,是错误的写法:
int i = 1;
boolean b1 = i; //错误
boolean b2 = (boolean) i; //错误
boolean b = true;
int i1 = b; //错误
int i2 = (int) b; //错误

六、运算符

在这里插入图片描述

1、算术运算符
/ 除法运算符 : 表示两个数相除运算
% 取余运算符 : 用来求余数的

public class TestOpe01{
		        public static void main(String[] args){
		                //打印结果:
		                System.out.println(12/3);//4
		                System.out.println(12%5);//2
		                System.out.println(12/3.0);//4.0
		                System.out.println(12%5.0);//2.0
		        }
		}
	练习:任意给出一个四位数,求出每位上的数字并输出
import java.util.Scanner;
	public class TestOpe01{
	        public static void main(String[] args){
	                //实现功能:任意给出一个四位数,求出每位上的数字并输出
	                
	                //1.任意给出一个四位数:
	                Scanner input = new Scanner(System.in);
	                System.out.println("请录入一个四位数:");
	                int num = input.nextInt();
	                
	                
	                //2.求出每位上的数字:
	                //个位数:
	                int num1 = num%10;
	                //十位数:
	                int num2 = num/10%10;//1234--->123--->3
	                //百位数:
	                int num3 = num/100%10;//1234--->12--->2
	                //千位数:
	                int num4 = num/1000;//1234--->1
	                
	                
	                //3.输出每位上的数字:
	                System.out.println("个位上的数为:"+num1);
	                System.out.println("十位上的数为:"+num2);
	                System.out.println("百位上的数为:"+num3);
	                System.out.println("千位上的数为:"+num4);
	        }
	        
	}
  • 的作用:
    (1)表示正数
    (2)表示相加操作
    (3)进行字符串的拼接
public class TestOpe03{
	        public static void main(String[] args){
	                //表示正数:
	                System.out.println(+5);//5
	                //相加操作:
	                System.out.println(5+6);//11
	                System.out.println(5+'6');//59
	                //字符串的拼接:
	                //规则:+左右两侧的任意一侧有字符串,那么这个加号就是字符串拼接的作用,结果一定是字符串
	                int num = 56;
	                System.out.println("num="+num);//"num=56" ---> num=56
	                System.out.println(5+6+"7");//11+"7"--->"117"  --->117
	                System.out.println(5+'6'+"7");//59 +"7"--->"597" --->597
	                System.out.println("5"+6+"7");//"56"+"7"  --->"567"--->567
	                System.out.println("5"+'6'+"7");//"56"+"7"--->"567"--->567
	                System.out.println("5"+'6'+'7');//"56"+'7'--->"567"---567
	        }
	}
	

自增++
++单独使用的时候,无论放在前还是后,都是加1操作
将++参与到运算中:规则:看++在前还是在后,如果++在后:先运算,后加1 如果++在前,先加1,后运算

					a = 5;
	                int m = a++ + 7;//先运算  m=a+7  再加1:  a = a+1 
	                System.out.println(m);//12
	                System.out.println(a);//6
	                
	                a = 5;
	                int n = ++a + 7;//先加1  a=a+1  再运算:  n = a+7 
	                System.out.println(n);//13
	                System.out.println(a);//6

自减–
和++同理

**练习:
public class TestOpe05{
        public static void main(String[] args){
                int a = 5;
                System.out.println(a++ + a++);
                System.out.println(a++ + ++a);
                System.out.println(++a + a++);
                System.out.println(++a + ++a);
        }
}

2、赋值运算符 =

int a=9
=的作用: 将等号右侧的值赋给等号左侧:

****练习:任意给出两个数,交换两个数并输出:
public class TestOpe06{
	        public static void main(String[] args){
	                //任意给出两个数,交换两个数并输出:
	                //1.给出两个数:
	                int num1 = 10;
	                int num2 = 20;
	                
	                //2.输出交换前的两个数:
	                System.out.println("交换前:"+num1+"\t"+num2);
	                
	                //3.交换
	                	
	                //解决办法:
	                //引入一个中间变量:
	                int t;
	                t = num1;
	                num1 = num2;
	                num2 = t;
	              
	                
	                //4.输出交换后的两个数:
	                System.out.println("交换后:"+num1+"\t"+num2);
	        }
	}
	

交换两个数的四种方法:数据交换

扩展赋值运算符 +=,-=,*=,/=
练习:给出三个数,求和。
public class TestOpe07{
	        public static void main(String[] args){
	                //实现功能:给出三个数,求和:
	                //1.给出三个数:
	                int num1 = 10;
	                int num2 = 20;
	                int num3 = 30;
	                //2.求和
	                //int sum = num1+num2+num3;
	                //定义一个变量,用来接收和:
	                int sum = 0;
	                sum = sum + num1;//等效:sum += num1;
	                sum = sum + num2;// sum += num2;
	                sum = sum + num3;//sum += num3;
	                //3.将和输出:
	                System.out.println("和:"+sum);
	        }
	}

a+=b 和 a=a+b 区别:
(1)a+=b 可读性稍差 编译效率高 底层自动进行类型转换
(2)a=a+b 可读性好 编译效率低 手动进行类型转换
3、扩展赋值运算符
就是“赋值运算符”和“算数运算符”的结合体。
+=,a += b,等效于:a = (a的数据类型)(a + (b));
-=,a -= b,等效于:a = (a的数据类型)(a - (b));
*=,a *= b,等效于:a = (a的数据类型)(a * (b));
/=,a /= b,等效于:a = (a的数据类型)(a / (b));
%=,a %= b,等效于:a = (a的数据类型)(a % (b));
关系运算符 >,<,>=,<=,==,!=
关系运算符最终结果:要么是true要么是false

public class TestOpe08{
        public static void main(String[] args){
                //>,<,>=,<=,==,!=
                //关系运算符最终结果:要么是true要么是false
                System.out.println(4>9);//false
                System.out.println(4<9);//true
                System.out.println(4>=9);//false
                System.out.println(4<=9);//true
                System.out.println(4==9);//false
                System.out.println(4!=9);//true
                System.out.println((5<9)!=(6==8));//true
        }
}

逻辑运算符&,|,&&,||,!,^
逻辑运算符:进行逻辑运算的,运算符左右连接的都是 布尔类型的操作数,最终表达式的结果是布尔值:要么是true,要么false

& ······ 逻辑与 ··只要有一个操作数是false,那么结果一定是false
&& ···· 短路与··效率高一些,只要第一个表达式是false,那么第二个表达式就不用计算了,结果一定是false
| ······· 逻辑或···只要有一个操作数是true,那么结果一定是true
||········短路或··效率高一些,只要第一个表达式是true,那么第二个表达式就不用计算了,结果一定是true
!·······非····相反结果
^ ·······逻辑异或···两个操作数相同,结果为false,不相同,结果为true
public class TestOpe10{
	        public static void main(String[] args){
	                int i=8;
	                System.out.println((5>7)&&(i++==2)); //false
	                System.out.println(i);  //8 
	                
	                
	                int a=8;
	                System.out.println((5>7)&(a++==2)); //false
	                System.out.println(a); //9
	                
	                
	                int m=8;
	                System.out.println((5<7)&&(m++==2)); //false
	                System.out.println(m); //9
	                
	                int b=2;
	                System.out.println((5<7)&(b++==2)); //true
	                System.out.println(b);  //3
	                
	                int c=2;
	                System.out.println((5<7)&(++c==2)); //false
	                System.out.println(c);  //3
	        }
	}

4、条件运算符?:
又称为三元运算符或三目运算符

	public class a {
    public static void main(String[] args) {
        boolean a = 2 < 3;
        boolean b =  2 >3;
        System.out.println(a?"对":"错");
        System.out.println(b?"对":"错");

    }
}

格式: a?b:c
其中a是一个布尔类型的表达式,返回结果要么是true要么false,通过a的结果决定最终表达式的结果:
如果a的结果是true,那么表达式最终结果为b;
如果a的结果是false,那么表达式最终结果为c

在这里插入图片描述

public class TestOpe11{
	        public static void main(String[] args){
	                int num = (5>7)?6:9 ;
	                System.out.println(num);
	                
	                String str = (4==4)?"你好":"你不好" ;
	                System.out.println(str);
	                
	                System.out.println((4==4)?"你好":"你不好");
	        }
	}

练习:男孩女孩选择晚饭吃什么,如果意见一致,听男生的,如果意见不一致,听女生的

import java.util.*;//*代表所有
public class TestOpe12{
        public static void main(String[] args){
                //实现功能:男孩女孩选择晚饭吃什么,如果意见一致,听男生的,如果意见不一致,听女生的
                
                //1.要让男孩女孩选择晚饭吃什么:
                Scanner sc = new Scanner(System.in);
                System.out.println("请选择今晚吃什么:1.火锅 2.烧烤 3.麻辣烫 4.西餐");
                System.out.println("请男孩选择:");
                int boyChoice = sc.nextInt();
                System.out.println("请女孩选择:");
                int girlChoice = sc.nextInt();
                //2.判断:
                System.out.println(boyChoice==girlChoice?"听男孩的":"听女孩的");
        }
}

三目运算符可以代替if–else

位运算符 &,|,^,~ , >>,<<,>>>
可以看到,部分逻辑运算符和位运算符有重叠,但含义并不一样

如何区分逻辑运算符和位运算符:
逻辑运算符:左右连接的是布尔类型的操作数
位运算符:左右连接的是具体的数值

<< ····逻辑/算术左移 ··· 3<<3=24 ····相当于左移三位 ·····相当于乘了2的3次方
有符号右移>>比较难理解查看这个链接
无符号右移:>>>查看这个链接
&与 ··1&1=1,1&0=0
异或^ 1和0,0或1异或···为1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kerve

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值