Java周总结(一)

这篇博客介绍了Java编程的基础,包括Java的起源、特点、执行机制和环境配置。讲解了类、包、变量、数据类型转换、运算符、键盘录入数据以及流程控制语句的概念和使用方法,适合Java初学者入门。
摘要由CSDN通过智能技术生成

一.Java概述与环境配置

1.java由来

 1995年推出的面向对象的编程语言。三个平台Java SE、Java EE、Java ME, 2014年发布的JDK8是商用主流版本。

2.java语言特点

  • 面向对象
  • 简单性
  • 跨平台性

3.java执行机制

 先编译再解释:

  • 将源文件(.java文件)编译成字节码文件(.class文件);
  • 然后将字节码文件解释执行

名词解释:
Jdk: java develop kit ,Java开发工具包:包含了jre以及相关工具;
Jre: java runtime environment:Java运行环境:包含Jvm以及Java所有需要的核心类库rt.jar;
JVM(Java Virtual Machine)虚拟机:使用软件在不同操作系统中,模拟相同的环境。

4.配置环境变量两种方式

1)将jdk安装目录的bin目录路径作为path变量中的某个变量直接引用;

2)系统变量:

 变量名:JAVA_HOME ;
 变量值:Jdk的安装目录

在path:引入JAVA_HOME变量 :%JAVA_HOME%\bin

5.类的阐述

  • 同一个源文件中可以定义多个类。
  • 编译后,每个类都会生成独立的.class文件。
  • 一个类中,只能有一一个主方法,每个类都可以有自己的主方法。
  • public修饰的类称为公开类,要求类名必须与文件名称完全相同,包括大小写。
  • 一个源文件中,只能有一个公开类

6.Package(包)

  • 作用:类似于文件夹,用于管理字节码(.class) 文件
  • 语法:package包名; 位置:必须写在源文件的第一行
  • 带包编译:javac -d .源文件名称.java (自动生成目录结构)
  • 带包运行: java包名.类名 (包名+类名又称全限定名)
  • 采用域名倒置的规则: www.baidu.com.cn -> cn.com.baidu.xxx

7.编码规范

(1)书写格式 :

  • 层级之间必须缩进 (Tab:一个指标位)
  • 一行写一句代码
package Test
class Test1{
	public static void main (String[] args){
		System.out.println("hello world");
	}
}

(2)代码注释 :

单行注释: // 第一天上java课

多行注释: /* 不难很难艰难 */

文档注释: /* * *如果不知道明天的路该往那走 */

注:文档注释生成外部文档,注释不参与编译

(2)标识符命名 :

语法规定:

  • 可以由:字母、数字、. 、$组成,但不能以数字开头。
  • 不能与关键字、保留字重名。

约定俗成:

  • 望文生义、见名知义。
  • 类名由一个或多个单词组成,每个单词首字母大写(pascal) 。
  • 函数名、变量名由一个或多个单词组成,首单词首字母小写,拼接词首字母大写(camel) 。
  • 包名全小写,只可以使用特殊字符“."并且不以“."开头或结尾。
  • 常量全大写,多个单词用_ 连接。

8.关键字和标识符

关键字:被java赋予特定含义的单词(小写字母);

关键字含义
private一种访问控制方式: 私用模式
public一种访问控制方式: 共用模式
protected一种访问控制方式: 保护模式
abstract表明类或者成员方法具有抽象属性
class
if条件语句引导词
else条件语句,不成立时关键词
import表明访问包或类
break跳出语句,结束选择
package包名

二.常量

1.常量定义与分类

  • 定义:在程序运行过程中,其值不发生改变
  • 分类:字面值常量,自定义常量

字面值常量包括:

  • 整数常量:所有的整数;
  • 小数常量:所有的小数
  • 字符常量:将一个字符用单引号引起来,必须有内容
    ‘a’ ,‘A’,‘0’:单独使用输出的字符本身
    参与运算:找ASCII码表的值
    ‘A’:65
    ‘a’:97
    ‘0’:48
  • 字符串常量:双引号引起来的内容,可以写多个字符,也可以不写
  • 布尔常量 只有两个值:true,false 空常量:只有一个值(null)

2.进制概述与转换

  • 进制:就是进位制,是人们规定的一种进位方法。 运算时是逢X进一位。

2.1任意进制转换

  • 间接转换:x进制–>十进制–>y进制
    (1)将x进制通过按权展开法则(把系数乘以基数权次幂之积求和)转换为十进制;
    (2)然后将十进制得到的数除以进制数逆序取余即可得到y进制;
  • 直接转换:利用8421码可解决

2.2有符号的数据表示法

   在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。

  • 原码:二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小
  • 反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
  • 补码 正数的补码与其原码相同;负数的补码是在其反码的末位加1。

三.变量

1.变量概述

 在程序运行过程中,其值不断发生变化;

2.数据类型

Java的数据类型分为两大类:

  • 基本数据类型:包括 整数、浮点数、字符、布尔。
  • 引用数据类型:包括 类、数组、接口。

基本数据类型:

  • 整数类型:byte,int(默认),short,long(建议数据后加L表示);
  • 浮点数类型:float(建议数据后加F表示),double
  • 字符类型:char
  • 布尔类型:boolean

3.变量定义

 三要素:变量名(见名知意),数据类型,初始化值

格式

数据类型变量名  =  数据值

3.4 注意事项

  • 变量名称:在同一个大括号范围内,变量的名字不可用相同
  • 变量赋值:定义的变量,不赋值不能使用。

四.数据类型转换

1.隐式转换

定义:默认类型提升,将取值范围小的类型自动提升为 取值类型大的范围。

转换规则:
  byte、 short 、 char – >int – >long – >float – >double

注: byte,short,char三者之间不转换,一旦运算,先转换为int类型进行计算!

2.显示转换

强制类型转换:将取值范围大的类型 强制转换成 取值范围小的类型。

格式:

		目标数据类型(目前基本类型)    变量名  =  (目标数据类型)初始化值;		

问题:如果byte的值超出了范围,如何解决这个问题

	解决:强制类型转换
		
	原,反,补-----补码进行截取---->反码---->原码

强烈注意

  • 浮点转成整数,直接取消小数点,可能造成数据损失精度。
  • int 强制转成 short 砍掉2个字节,可能造成数据丢失。

五.运算符

分类:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 三目运算符

1.算数运算符

  • +,-,/都是比较简单的操作
  • +的几种作用: 加法 正数 字符串连接符
  • ++和–的应用 单独使用效果相同 参与运算使用,在操作数的前后效果不同
  • ++/–在变量前面:先进行自增或者自减,然后参与运算
  • ++/–在后面:先运算,在自增或者自减

2.赋值运算符

+=,*=,-=,/=,%=… (隐藏了强制类型转换)

3.关系运算符

==,!=,<,>,>=,<=,instanceof,

注1:比较运算符的结果都是boolean型,也就是要么是true,要么是fals
注2:比较运算符“==”不能误写成“=”

4.逻辑运算符

&(与),|(或),^(异或),!(非),&&(双与),||(双或)

  • 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
  • “&”和“&&”的区别:
    单&时,左边无论真假,右边都进行运算。
    双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算(短路效果,一般建议使用)。
  • “|”和“||”的区别同理,双或时,左边为真,右边不参与运算
  • 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。

5.位运算符

位运算是直接对二进制进行运算。

位异或的特点以及<<,>>的特点
位异或:^ 一个数据被另一个数据位异或两次,其值是该数据本身!
<<: 将<<左边的数据值乘以2的移动次幂 2<<3 2*2^3

6.三目运算符

格式: (关系表达式)?表达式1:表达式2;

  • 如果条件为true,运算后的结果是表达式1;
  • 如果条件为false,运算后的结果是表达式2;

六.键盘录入数据

实现步骤:

  1. 导包(位置放到class定义的上面)
    import java.util.Scanner;
  2. 创建对象
    Scanner sc = new Scanner(System.in);
  3. 接收数据
    int x = sc.nextInt();

七.流程控制语句

流程控制语句的分类:

  • 顺序结构语句
  • 选择结构语句
  • 循环结构语句

1.顺序结构语句:

  • 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
  • 总的来说:写在前面的先执行,写在后面的后执行

2.选择结构语句:

2.1 if语句

if语句格式1

if(关系表达式){
  语句体;
}

执行流程:

  • 首先判断关系表达式看其结果是true还是false
  • 如果是true就执行语句体
  • 如果是false就不执行语句体

if语句格式2

if(表达式){
语句1;
}else{
语句2;
}
执行流程:

  • 表达式是否成立,如果成立,执行语句1,否则,执行语句2;

注意事项 :

  • 关系表达式无论简单还是复杂,结果必须是boolean类型
  • if语句控制的语句体如果是一条语句,大括号可以省略;
  • 如果是多条语句,就不能省略。建议永远不要省略
  • 一般来说:有左大括号就没有分号,有分号就没有左大括号

if语句格式2它和三元运算符的区别?
if语句格式2范围更大一些:推荐使用if语句格式2
if语句格式2:既可以操作具体的数据值/也可以操作输出语句
三元运算符:仅仅是作为一个运算符,一般都是操作具体的数据值!
int a = 10 ; int b =20 ; (a>b) ? a: b ;
如果能够使用三元运算符的就一定能够使用if…else… 但是如果能够使用if…else…,不一定能够使用三元运算符!

if语句格式3

if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
} … else {
语句体n+1;
}
执行流程

  • 首先判断关系表达式1看其结果是true还是false
  • 如果是true就执行语句体1
  • 如果是false就继续判断关系表达式2看其结果是true还是false
  • 如果是true就执行语句体2
  • 如果是false就继续判断关系表达式…看其结果是true还是false
  • 如果没有任何关系表达式为true,就执行语句体n+1。

2.2 switch语句

switch语句格式:

switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break; …
default:
语句体n+1;
break; }

执行流程:

  • 首先计算出表达式的值
  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,
  • 在执行的过程中,遇到break就会结束。
  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

switch语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),jdk7以后可以接收字符串。

注意事项:

  • case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
  • default可以省略吗?可以省略。一般不建议。除非判断的值是固定的。(单选题)
  • break可以省略吗?可以省略,一般不建议。
  • default的位置一定要在最后吗?可以出现在switch语句任意位置。
  • switch语句的结束条件: 遇到break 执行到程序的末尾

case穿透性

  在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。

public static void main(String[] args) {
	 int i = 5; 
	switch (i){
	case 0: 
		System.out.println("执行case0");
		break;
	case 5:
		 System.out.println("执行case5");
	case 6:
		 System.out.println("执行case6");
	default: 
		System.out.println("执行default");
		 } 
	}
    上述程序中,执行case5后,由于没有break语句,程序会一直向后走,
不会在判断case,也不会理会break,直接运行完整体switch。

if语句和switch语句的区别:
if语句使用场景:

  • 针对结果是boolean类型的判断
  • 针对一个范围的判断
  • 针对几个常量值的判断

switch语句使用场景:

  • 针对几个常量值的判断

3.循环结构语句:

3.1 循环概述
  循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

循环语句的组成

  • 初始化语句:一条或者多条语句,这些语句完成一些初始化操作。
  • 判断条件语句:这是一个boolean = 表达式,这个表达式能决定是否执行循环体。
  • 循环体语句:这个部分是循环体语句,也就是我们要多次做的事情。
  • 控制条件语句:这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。

3.2 循环语句for

for循环语句格式
for(初始化表达式①; 布尔表达式②; 步进表达式④){
循环体③
}

执行流程 执行顺序:①②③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化
②负责判断是否满足循环条件,不满足则跳出循环
③具体执行的语句
④循环后,循环条件所涉及变量的变化情况

求水仙花数案例:
class Test{
	public static void main (String[] args){
		for(int x=100;x<1000;x++){
			int ge =x % 10;
			int shi= x/10 % 10;
			int bai= x/100% 10;
			if(x==ge*ge*ge+shi*shi*shi+bai*bai*bai){
			System.out.println("水仙花数为:"+x);
			}			
		}
		}	
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值