java语言常用部分基础知识

Java语言部分基础知识

Java语言的特点:

	开源:开发源代码 
			查看Java源代码如何实现!
	跨平台:
		跨操作系统	

软件结构划分

   C/S结构:Client-Server :客户端和服务器端的交互
特点:客户端想要使用服务器端的高版本功能,必须升级!
 典型的应用:QQ客户端,办公软件,其他客户端

   B/S结构:Browser-Server:浏览器端和服务器端的交互
  应用: 大型网站---网银新闻,游戏网站
  特点:计算机中只要有一个浏览器(IE,谷歌,火狐,欧鹏...),就可以访问网站!

JDK,JRE,JVM三者的关系

JDK (Java Development Kit):是Java程序开发工具包,包含JRE和开发人员使用的工具.
JRE(Java Runtime Environment):是Java程序的运行时环境,包含JVM和运行时所需要的核心类库.
JVM(Java Virtual Machine)(Java虚拟机)的缩写,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java最具吸引力的特性之一.我们编写的Java代码,都运行在JVM上。
三者关系:JDK > JRE > JVM

path环境变量配置

配置方式一:
			1)找到(jdk安装目录的bin目录):复制这个路径
			D:\develop_software\Java\jdk1.8.0_162\bin
	win10系统:
			找到path:
				新建变量:D:\develop_software\Java\jdk1.8.0_162\bin(建议:移动的前面)		
	win7/win8:
		path: D:\develop_software\Java\jdk1.8.0_162\bin(放置path中其他系统变量最前面)
配置方式二:(推荐第二种方式)
	此电脑/计算机---->右键---属性----->高级系统设置---->环境变量
	在系统变量新建一个变量:
	变量名:JAVA_HOME
	变量值:jdk的安装目录的路径:D:\develop_software\Java\jdk1.8.0_162
	path中:引入JAVA_HOME路径
		   最前面:
	%JAVA_HOME%\bin;%System32% (path系统变量在同一行上,每一个系统变量中间需要分号隔开)	

Java中的数据类型

基本数类型:四类八种
		整数类型:默认int
			byte		范围:-128-127			1个字节
			short								2个
			int								4
			long								8
					
		浮点类型:默认double		
				float								     4
				double								8
					
		字符类型:char							2个字节
					
		布尔类型
				boolean (true/false)				占1个字节
		引用数据类型:
						数组,接口,类(具体类,抽象类)

关键字

关键字
被Java语言赋予特定的含义的单词!

 class:类(最基本的单元)
 public:权限修饰符 (公共的,公开的)
static:静态修饰符(面向对象部分讲解)
void:(Java中方法没有具体返回值:使用void代替:讲方法的时候说!)

数据类型:
  基本类型....  int,boolean,double,float,long,byte,short...	
  
运算符号:
 面向对象部分:extends(继承)  interface(接口)  abstract(抽象)

main:不是关键字:main(): 程序的入口 (能够被Java虚拟机 jvm识别)

常量与变量

常量
在程序运行过程中,其值不发生改变!
	1)字面值常量
		字符串常量
		字符常量
			'a' ,'A','0':单独使用输出的字符本身
			参与运算:找ASCII码表的值
				'A':65
				'a':97
				'0':48
		整数常量
		小数常量
		布尔常量
		空常量	
	2)自定义常量(居多) :和final有关系
变量 
	变量的三要素
		数据类型
		变量名称(遵循标识符的规则)
		初始化值

运算符

算术运算符
	++/--
		参与运算:
			++/--在变量前面:先进行自增或者自减,然后参与运算
			++/--在后面:先运算,在自增或者自减
			
逻辑运算符
	常见的逻辑运算符:&  |   ^   !   
	&:表示并列关系,有false则false
   &&:左边表达式为false,则右边不执行(短路效果)
   |:有true则true
   ||:左边表达式为true,右边不执行(短路效果)
   
 逻辑单与和逻辑双与:都表示并列关系,有false,则false!	
逻辑双与&&连接的表达式:左边为false,右边就不执行了(具有短路效果)

	逻辑异或^:相同则为false,不同则为true
	逻辑非!:非true,false;非false,则true,偶数个非是它本身!
	
三元运算符
	格式:
		(表达式) ? 执行true的结果:执行false的结果
		表达式:可以是简单的或者复杂的表达式------>true/false
	执行流程:
		1)先判断表达式是否成立,如果成立,执行true的结果
		2)如果不成立,执行false的结果
		
位异或:^ 
	一个数据被另一个数据位异或两次,其值是该数据本身!
	<<:  将<<左边的数据值乘以2的移动次幂     2<<3    2*2^3		
	>>: 将>>左边的数据除以2的移动次幂   24 >> 2   24/2^2 = 6	
	
标识符的规则
	1)对类的命名规则:
		单个单词:首字母大写,其余小写
		多个单词:每个单词首字母大写,其余小写(大驼峰命名法)
				class StudentDemo{}
				
	2)对变量的命名规则:
		单个单词:字母全部小写
		多个单词:第一个单词全部小写,从第二个开始,每个单词首字母大写(小驼峰命名法)
				int num  = 10;
				int applePrice = 20 ;	

显示转换与隐式转换

显示转换:强制类型转换
     目标数据类型(目前基本类型)    变量名  =  (目标数据类型)初始化值;
隐式转换:默认类型提升
     byte,short,char三者之间不转换,一旦运算,先转换为int类型进行计算!    

键盘录入

操作步骤
	a)导包
	在class上面,package 下面
		import java.util.Scanner ;
		
	b)在main方法中创建键盘录入对象Scanner
	Scanner sc = new Scanner(System.in) ;
	c)提示并集接收数据
	System.out.println("请输入数据:") ;
	//目前使用方法:Scanner类提供了方法:nextInt()
	int number = sc.nextInt() ;
	d)针对number操作,要么输出/比较/求最大值....
	
键盘录入里面的细节

	1)同时录入两个int
	2)同时录入两个字符串String    nextLine()
	3)先录入字符串,在录入一个int
	以上三个都没有问题.
        4)先录入int,在录入一个String
 
存在问题:
	先录入int类型的数据,在录入String---->字符串数据没有录入,直接漏掉了,
	回车符号
	
	每次录入数据----->敲"回车符号"  10,回车符号本身---->字符串值	

/*
 需求:
  键盘录入两个数据,求两个数据中的最大值 (默认int类型)
  键盘录入:三个数据:求最大值
  键盘录入两个数据:比较是否相等
*/
import java.util.Scanner;
class ScannerTest{
 public static void main(String[] args){
  
  //1)导包
  //2)创建键盘录入对象
  Scanner scanner = new Scanner(System.in) ;
  
  //3)提示并接收数据
  System.out.println("请您输入第一个数据:") ;
  int num1 = scanner.nextInt() ;
  
  System.out.println("请您输入第二个数据:") ;
  int num2 = scanner.nextInt() ;
  
  //4)两个数据中的最大值
  
  //三元运算符进行比较
  int max = (num1 > num2) ? num1: num2 ;
  System.out.println("两个数据的最大值是:"+max) ;
  
  System.out.println("-----------------------------------") ;
  
  //键盘录入:三个数据:求最大值
  //提示并接收数据
  System.out.println("请输入第一个数据:") ;
  int a = scanner.nextInt() ;
  
  System.out.println("请输入第二个数据:") ;
  int b = scanner.nextInt() ;
  
  System.out.println("请输入第三个数据:") ;
  int c = scanner.nextInt() ;
  
  //两种方式:
  //1)中间变量
  //int temp = (a>b) ? a: b ;
  //int result = (temp > c)? temp : c ;
  
  //2)直接三元运算符
  int result = (a > b) ? ((a > c) ? a : c) : ((b > c)? b: c) ;
  
  System.out.println("result:"+result) ;
  
  
  System.out.println("-----------------------------------") ;
  
  //键盘录入两个数据:比较是否相等
  //提示并接收数据
  System.out.println("请输入第一个数据:") ;
  int firNum = scanner.nextInt() ;
  
  System.out.println("请输入第二个数据:") ;
  int secNum = scanner.nextInt() ;
  
  boolean flag = firNum == secNum ;
  System.out.println("flag:"+flag) ;
  
  
 }
}

for循环的格式:

	for(初始化语句;条件表达式;步长语句){
		  循环体语句;
	}
	
	
执行流程:
1)初始化语句给变量进行赋值,只执行一次
2)判断这个条件表达式是否成立,
	如果成立,就执行循环体语句,在去执行步长语句 (++,--)
3)再次判断条件表达式是否成立,如果成立,继续上面执行方式...
	...
	
	...
4)一直循环到条件表达式不成立的时候,for循环结束!
/*
 需求:
 
  控制台输出: 
     1~10的数据:
     
   
*/
class ForTest{
 public static void main(String[] args){
  //1,2,3,4,5,6,7,8,9,10
  //原始的做法:
  System.out.println(1) ;
  System.out.println(2) ;
  System.out.println(3) ;
  System.out.println(4) ;
  System.out.println(5) ;
  System.out.println(6) ;
  System.out.println(7) ;
  System.out.println(8) ;
  System.out.println(9) ;
  System.out.println(10) ;
  
  System.out.println("-------------------------------") ;
  
  //上面原始做法:代码冗余(重复度高)
  //优化:
  //for循环
  for(int x = 1; x <= 10 ; x ++){ 
  //x=1,x<= 10 ---->System.out.println(1) ----> x++ --2
  //x=2, x<=10 ---->System.out.println(2)----->x++ --3
  //x=3 , x <=10  ---->System.out.println(3)
   
   //循环体
   System.out.println(x) ;//1,2,.....
  }
 }
}

if语句格式

if语句格式2以及执行流程
	开发中:if...else...
	if(表达式){
			语句1;
	}else{
			语句2;
	}
	表达式是否成立,如果成立,执行语句1,否则,执行语句2;				
		
				
if语句格式2的嵌套:

		if(表达式){
			//表达式成立
			if(表达式1){
					语句1;
			}else{
					语句2;
			}
		}else{
			//不成立
			if(表达式11){
				语句11;
			}else{
				语句22;
			}
		}

流程:
首先判断外层if中表达式是否成立,
如果成立,执行表达式2是否成立
		如果表达式2成立,执行语句1;否则,执行语句2;
外层if中表达式不成立,就执行else中的语句

		首先判断表达式11是否成立,如果成立,执行语句11,
		否则执行语句22;
/*
  键盘录入学生的成绩,判断学生的成绩等级
   90~100    突出
   80~90之间 优秀
   70~80之间  良好
   60~70     及格
   60以下    不及格
*/
//导包
import java.util.Scanner ;
class IfDemo4{
 public static void main(String[] args){
  
  //创建键盘录入对象
  Scanner sc = new Scanner(System.in) ;
  
  //提示,并接收数据
  System.out.println("请您录入学生的成绩: ") ;
  int score = sc.nextInt() ;
  
  if(score >100 || score < 0){
   System.out.println("您录入的是一个非法数据...") ;
  }else if(score >= 90 && score <=100){
   System.out.println("该学生成绩十分突出...") ;
  }else if(score >=80 && score< 90){
   System.out.println("该学生成绩优秀...") ;
  }else if(score >= 70 && score <80){
   System.out.println("该学生成绩良好...") ;
  }else if(score >= 60 && score <70){
   System.out.println("该学生成绩及格...") ;
  }else{
   System.out.println("该学生成绩不及格...") ;
  }
  
  
 }
}
if语句格式2它和三元运算符的区别?
	if语句格式2范围更大一些:推荐使用if语句格式2
		if语句格式2:既可以操作具体的数据值/也可以操作输出语句	
		三元运算符:仅仅是作为一个运算符,一般都是操作具体的数据值!
		int a = 10 ;
		int b  =20 ;
		(a>b) ? a:  b ;
		
	如果能够使用三元运算符的就一定能够使用if...else...
	但是如果能够使用if...else...,不一定能够使用三元运算符!			

switch语句的格式

switch(表达式){

	case 值1:
			语句1;
			break ;
	case 值2:
			语句2;
			break ;
			
	...
	...
	default:
			语句n;
			break ;

}

执行流程:
	1)先判断表达式的值它和case语句值1,是否匹配
		如果匹配,执行语句1,遇见break ,switch语句结束了!
	2)如果值1不匹配,继续判断值2是否和表达式中的值是否匹配,如果匹配,执行语句2
			遇见break,switch语句结束!
	3)如果上面的所有case语句都不匹配,执行default语句,执行语句n,直接结束			
		
switch语句使用的注意事项:

1)switch语句中的case语句后面跟的常量值,不能跟变量!  
				对比:javascript:switch语句 中的case可以是常量也可以变量
2)case语句中的break不能轻易省略,否则就会造成"case穿透"

		如果没有写break,跟下面case值不进行比较,直接运行语句,直到遇见break结束!

3)switch中的default语句:书写位置默认是在末尾,但是它也可以在switch语句中的任何位置,但是不影响执行流程
			
			都需要先跟case中的值进行比较,如果都没有匹配,都需要执行default...
			
			如果default在语句的末尾,break可以省略,如果在语句中的话,不建议省略break ;
			
4)关于switch语句的结束问题:
		1)遇见break (中断,结束的意思) ,switch语句结束
				break:属于跳转控制语句中一种:两种场景:switch中/循环语句中
		2)语句默认执行到末尾!
/*  
需求:
 键盘录入一个数据,判断星期  (使用switc语句完成)
  1,星期一
  2,星期二
  3,星期三
  4,星期四
  5,星期五
  6,星期六
  7,星期天
 
*/
//导包
import java.util.Scanner;
class SwitchDemo{
 public static void main(String[] args){
  
  //创建键盘录入对象
  Scanner sc = new Scanner(System.in) ;
  
  //提示并接收数据
  System.out.println("请您输入一个数据:") ;
  int weekDate = sc.nextInt() ;
  
  switch(weekDate){
  case 1:
   System.out.println("星期一") ;
   break ;
  case 2:
   System.out.println("星期二") ;
   break ;
  case 3:
   System.out.println("星期三") ;
   break ;
  case 4:
   System.out.println("星期四") ;
   break ;
  case 5:
   System.out.println("星期五") ;
   break ;
  case 6:
   System.out.println("星期六") ;
   break ;
  case 7:
   System.out.println("星期天") ;
   break ;
  default : //末尾
   System.out.println("非法数据!!") ;
   break ;
   
  }
 }
}

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值