Java SE 基础知识~流程控制

  • 基本知识
    • java历史
    • java为什么能实现跨平台:
      • java程序的运行
  • 安装和配置
    • 为什么要配置环境变量
  • Java程序
    • 第一个程序
    • 三种打印方式
  • 数据类型与运算符
    • 变量和类型
      • 标识符命名规范
  • 查看基本数据类型的范围
    • 整型变量 int
    • 长整型变量 long
    • 双精度浮点型 double
    • 单精度浮点型 float
    • 短整型变量 short
    • 字符类型 char
    • 字节类型 byte
    • 布尔类型
      • 类型转换
    • 字符串类型 String
      • 变量的作用域
  • 常量
    • 字面常量
      • final修饰的常量
    • 原码,反码,补码
    • 运算符
      • 算术运算符
        • ++、--
      • 关系运算符
      • 逻辑运算符--短路运算符
      • 位运算符--两个表达式都要判断
      • 移位运算符
      • 条件运算符
      • 运算符的优先级
  • 逻辑控制
    • 顺序结构
    • 分支结构
      • if语句
        • 读取字符--简单使用,项目慎用
      • switch 语句
    • 循环结构
      • while循环
      • for循环
      • do-while循环
      • break
      • continue
      • return
      • 输入输出

基本知识

java历史

一. 1991年sun(斯坦福大学实验室)创始人JamesGosling:高斯林 提出jdk1.1.
二.计算机功能:
1.存储数据
2.运算(算术、关系比较、逻辑、位),通过程序来运算
三.程序演变:
1.机器编程:(硬件方式跳线帽)

2.低级编程语言:汇编

3.中级编程语言
C语言(面向过程----函数与函数直接的相互调用)
Basic
Pascal
解决中级难度业务逻辑。高级复杂问题,程序规模几何级增加。
平台相关的高依赖性。(软件平台+硬件平台)
应用层app
操作系统os(windows、linux、unix、ios、Android、……)
  内核kennel
   硬件hardware(pc,server,ipad,fax,card……)
4.高级编程语言
Java
C++
C#(ASP.NET)
Python(ai)
Go
……

java为什么能实现跨平台:

Write once only once,write once run anywhere
1.Java核心技术JVM(java visual machine)是java虚拟机技术。
2.保障java程序运行的一个基本环境(jre—java runtime environment)
JVM: java虚拟机,把对应的字节码文件拉取过来执行,实际上是一个软件,用c/c++写的,用软件实现了一个类似硬件的东西
JDK::java开发者工具
JRE: java运行环境 三者关系**JDK(JRE(JVM))**只要有jdk和.class文件,就能运行,即一次编译,到处运行
类比:
植物生长土壤(jvm:植物生长所有的微量元素集合)器皿(jvm)

java程序的运行

1.编译:

在windows环境中,打开命令窗口,切换到java文件的目录,使用 javac 命令,执行 javac xxx.java(源代码文件) 把.java文件编译成.class文件(字节码文件。包含了当前类中的信息,是一个二进制文件,源代码中一个类对应一个字节码文件)

2.装载字节码:

编译好的.class文件交给 JVM 执行,即使用java命令,执行java xxx(.class文件的名称,不带后缀)。java命令将会启动 JVM,并将后面的参数作为初始化类,通过 JVM 内的类加载器将字节码文件装载到内存中。

3.校验字节码:

类的加载是通过类加载器进行的,加载完后,先由字节码校验器负责检查那些无法执行的明显有破坏性的操作。除了系统类之外,其他类都要被校验。

校验器执行的一些检查:

变量要在使用前初始化
方法调用与对象引用类型之间要匹配
访问私有数据和方法的规则没有被违反
对本地变量的访问都在运行的堆栈内
运行时堆栈没有溢出
如果这些检查没有通过,类最终不会被加载完成。

4、解释字节码
JVM 把每一条要执行的字节码交给解释器,翻译成对应的机器语言,最终由操作系统执行。
JVM 解释执行字节码文件就是 JVM 操作 Java 解释器进行解释执行字节码文件的过程。

安装和配置

1.安装JDK:java开发者工具
2.配置环境变量
path:
classpath:
3.安装集成开发环境如(IDEA、eclipse等)

为什么要配置环境变量

让用户可以在任意路径下运行java_home目录下bin中的应用程序(javac,java……)

Java程序

1.程序模式:
Applet:嵌入到网页中的小应用程序;
Application:基于控制台的应用程序,有主入口函数main;
Web:基于web容器的服务程序;
Javaee:基于web容器大型企业级的应用程序。
2.程序类别:
J2se:java 2 platform standard edtion是java标准开发版
J2ee:java 2 platform enterprise edition是java企业开发版
J2me:java 2 platform mobile edtition是java移动开发版
Jcard:java card是java芯片开发

第一个程序

public class Helloword{pubilc static void main(String[] args){System.out.println("hello");}}

1.public :访问修饰限定符:任意的空间都可以访问 ** 文件名和类名相同**
2.class:关键字,用来定义一个类
3.Helloword:类名
public static void main(String[] args): java当中的main函数(方法),是程序的入口
public: 入口函数的作用域,公有的
static: 静态的,该函数会直接被调用动cpu的缓存中(register)
void: 任意类型,表示主入口函数执行完毕后,不向外界反回数据。
String[] args:形式参数:是一个数组。
System.out.println():相当于C语言的打印函数printf

三种打印方式

     System.out.println("123456");//打印换行System.out.print("123456");//打印不换行System.out.printf("%d\n",123456);和c语言相同

数据类型与运算符

变量和类型

1.变量 : 是程序运行时可改变的量,开辟一块内存空间来存储数据,是存储空间的表示,是一个程序的基本组成单位。
2.类型: 不同种类的变量
变量要初始化否者会报错

标识符命名规范

1.变量的命名: 小驼峰,数字 字母 下划线 美元符号,开头不能是数字
2.包名: 小写
3.类名 : 多单词时,每个单词首字母大写
4.方法名: 第一个单词首字母小写,后面单词首字母大写
5.常量名: 所有字母大写

查看基本数据类型的范围

 /*** @param args* 使用基本数据类型的包装类查看其位数和取值范围*/public static void main(String[] args) {System.out.println("*************************************");System.out.println("int整型位数:" + Integer.SIZE);System.out.println("int整型范围: " + Integer.MIN_VALUE + "~" + Integer.MAX_VALUE);System.out.println("*************************************");System.out.println("long长整型位数:" + Long.SIZE);System.out.println("long长整型范围: " + Long.MIN_VALUE + "~" + Long.MAX_VALUE);System.out.println("*************************************");System.out.println("byte字节位数:" + Byte.SIZE);System.out.println("byte字节范围: " + Byte.MIN_VALUE + "~" + Byte.MAX_VALUE);System.out.println("*************************************");System.out.println("short短整型位数:" + Short.SIZE);System.out.println("short短整型范围: " + Short.MIN_VALUE + "~" + Short.MAX_VALUE);System.out.println("*************************************");System.out.println("double双精度浮点型位数:" + Double.SIZE);System.out.println("double双精度浮点型范围: " + Double.MIN_VALUE + "~" + Double.MAX_VALUE);System.out.println("*************************************");System.out.println("float单精度浮点型数:" + Float.SIZE);System.out.println("float单精度浮点型范围: " + Float.MIN_VALUE + "~" + Float.MAX_VALUE);}
}

整型变量 int

1.大小:无论什么操作系统都是 4字节,统一为有符号型,第一位为符号位。
取值范围-2^31~ 2^31-1 。

长整型变量 long

1.大小:8字节,没有longlong类型

 long num = 10L;//可加可不加L或者l 建议加

双精度浮点型 double

浮点数在计算机中的表示为:符号位+指数位+尾数位
尾数位可能丢失,造成精度损失。
1.大小: 8字节
2.代码:
代码一:

        int a = 1;int b = 2;System.out.println(a/b);// 结果 0,int 除以 int 的值仍然是 int(会直接舍弃小数部分)

代码二:

     double a = 1.0;double b = 2.0;System.out.println(a/b);//输出结果 0.5

代码三:

        double a = 1.1;System.out.println(a*a);//输出结果 1.2100000000000002,这是由于float,double是不精确计算的

单精度浮点型 float

1.大小:4字节

     float num=12.5f;//不加F或者f,系统会默认12.5为double ,将报错。

float精确到小数后六位,由于范围小,建议使用double.
java中尽量使用double 精度高。

短整型变量 short

1.大小:2字节,范围较小,不建议使用

     short num=10;

char类型的本质是数字代表字符

字符类型 char

1.大小:2字节

        char ch='a';System.out.println(ch);char t ='呵';System.out.println(t);//char能存储一个汉字,一个汉字在Unicode中占两个字节大小System.out.println("char位数:" + Character.SIZE);System.out.println("Character.MIN_VALUE = " + (int)Character.MIN_VALUE);System.out.println("Character.MAX_VALUE = " + (int)Character.MAX_VALUE);

char类型的本质是数字代表字符,输出的是Unicode对应的字符。
所以char类型能进行运算。

C语言中char为1个字节

字节类型 byte

1.大小:1字节

        byte value = 0;

布尔类型

1.大小:无规定。1 个字节、4 个字节都是有可能的。是运算效率和存储空间之间的博弈,两者都非常的重要。

     boolean a=ture;

值只能是true 和false 不能和其他类型相互转换

类型转换

1.自动转换: 低精度向高精度可以自动转换
byte–short–long–int–float–double
char和int等整型数据之间能相互转换

     int num1 = 'a';System.out.println(num1);

在编译的时候才知道变量内存储的值
代码一:

     int a=10;long b=a;System.out.println(b);//int 到long,是低字节到高字节运行正常long m=10;int n=m;//long 到int,是高字节字节到低字节报错

说明了在编译的时候才知道变量内存储的值
2.强制类型转换:

     long m=100l;int n=(int)m;

强制类型 ,有一定的风险
boolean类型不能强制转换
cpu在运行小于4个字节的类型时,为了提升效率会提升为int类型

     byte a=1;byte b=2;byte c=a+b;System.out.println(c);//报错byte c=1+2;//不报错,1,2是字面常量相当于c=3;

cpu在运行小于4个字节的类型时,会提升为int类型,为了提升效率

字符串类型 String

     String str = " hello";System.out.println(str);//注意问题System.out.println("hello"+"world");//+是拼接System.out.println("hello"+10+20);//其他数据类型和字符串拼接,结果就是一个字符串hello1020System.out.println(10+20+"hello");//30helloSystem.out.println(10+""+20+"hello");//""是空字符串1020helloSystem.out.println("a="+10+",b="+20);//a=10,b=20

一.基本数据类型和String类型的转换
1.基本数据类型和String类型转换:
+“”(加双引号)
Integer.toString(num)
String.valueOf(num)
2.String类型转换为基本数据类型:调用基本类型的parse()方法。如:

 public static void main(String[] args) {//1.用+""拼接 基本数据类型转Stringint num1=10;long num2=11l;short num3=12;byte num4=13;double num5=14.0;float num6=15.0f;String str="hello";System.out.println(num1+"");System.out.println(num2+"");System.out.println(num3+"");System.out.println(num4+"");System.out.println(num5+"");System.out.println(num6+"");//2.Integer.toString(num),String.valueOf(num)int a = 10;String ret = String.valueOf(a);//valueOf方法String ret1 = Integer.toString(a);//Integer.toString//String装换为基本数据类型,包装类的parse方法String str = "123.5";int d1 = Integer.parseInt(str);long d2 = Long.parseLong(str);short d3 = Short.parseShort(str);byte d4 = Byte.parseByte(str);double d5 = Double.parseDouble(str);float d6 = Float.parseFloat(str);
}

二.字符串的比较equal()方法:
1.比较地址 :
str1 和str2 是同一个地址,只是地址的表示不同

     //1.比较地址String str1 = "hello";String str2 = "hello";System.out.println(str1==str2);//结果为true

2.比较内容是否相同: equals()方法

     String str1 = "hello";String str2 = new String("hello");System.out.println(str2.equals(str1)); //结果为true

变量的作用域

局部变量:必须赋值
全局变量:不需要赋值,有初始值

public class Test5 {static int a;//全局变量:不需要赋值,有初始值public static void main(String[] args) {System.out.println(a+5);//结果为5int b;//局部变量System.out.println(b+5);//报错}
}
       {int a =10;//在一个代码块内是一个局部变量System.out.println(a);}System.out.println(a);//在代码块外没有a变量,编译报错找不到变量名

常量

字面常量

10 :int 字面值常量(十进制)
010 :int 字面值常量(八进制) 由数字 0 开头. 010 也就是十进制的 8
0x10 :int 字面值常量(十六进制) 由数字 0x 开头. 0x10 也就是十进制的 16
10L :long 字面值常量. 也可以写作 10l (小写的L)
1.0 :double 字面值常量. 也可以写作 1.0d 或者 1.0D
1.5e2 : double 字面值常量. 科学计数法表示. 相当于 1.5 * 10^2
1.0f :float 字面值常量, 也可以写作 1.0F
true :boolen 字面值常量, 同样的还有 false
‘a’ :char 字面值常量, 单引号中只能有一个字符
“abc” :String 字面值常量, 双引号中可以有多个字符

final修饰的常量

只能赋值一次

        final int a = 10;a =20;//报错,无法为最终变量a分配值。

和C语言中的const类似

原码,反码,补码

1.计算机中数以补码形式存储,第一位为符号位,1表示负,0表示正
2.正数的原码、补码、反码相同
如3的3码均为0000 0011
3.负数的原码第一位为1,其他与正数相同
如-3的原码为1000 0011
4.负数的反码:符号位不变,其他位按位取反
如-3的反码为1111 1100
5.负数的补码:其反码加1
-如3的补码:1111 1100+1为1111 1101

已知负数的补码,求负数:
补码-1=反码,反码按位取反
已知负数,求负数的补码
负数原码除了符号位,按位取反

运算符

算术运算符

四则运算:+、-、*、/、%(取余)
代码一:0不能作为除数

     int a=1;int b=0;System.out.println(a/b);//

报错.ArithmeticException: / by zero

代码二:取余
本质:a%b =a-a/b*b;

        System.out.println(10%3);// 1    3个3+1得10System.out.println(-10%3);//-1   3个-3+(-1)得-10System.out.println(10%-3);//1    -3个-3+1得-10System.out.println(-10%-3);//-1  -3个3+(-1)得-10

代码三:复合运算符会自动类型转换

        short a=10;a=a+10;//报错10 是int类型a+=10;//不报错,会自动类型转换

++、–

//独立时是一样的
i++;
++i;
//不独立时
a=++i;//先加加,再赋值
b=i++;//先赋值,再加加

关系运算符

== != < > <= >=
使用关系运算符,其结果是boolean类型

逻辑运算符–短路运算符

&& || !
短路求值
表达式1&&表达式2:表达式1 为假就不会执行表达式2了
表达式1||表达式2:表达式1为真就不会进行表达式2了

     System.out.println(10 > 20 && 10 / 0 == 0);//结果位false//0 不能做除数,但是10 > 20为假就不会执行10 / 0 == 0,所以结果为false。

位运算符–两个表达式都要判断

  1. & (按位与):
  2. | (按位或):
  3. ~(按位取反):
  4. ^(按位异或):相同为0,相异为1

移位运算符

  1. <<(左移)0000 1011(11)<<1,结果000 10110 (22)左移一位相当于乘2
  2. (右移)补符号位 0000 1011 (11)>>1,结果00000 101(5)右移一位相当于除以二

  3. 无符号右移>>>(不管符号为1,0只补0)

条件运算符

表达式1 ? 表达式2 : 表达式3
表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;
表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值;

运算符的优先级

不用记忆

逻辑控制

顺序结构

一步一步往下顺序执行

分支结构

if语句

        int n=10;if (n%2==0) {//黄色是警告,n%10=0,系统认为没必要比较System.out.println("偶数");}else {System.out.println("奇数");}

读取字符–简单使用,项目慎用

先读字符串,再读数值

     Scanner scanner= new Scanner(System.in);//读取一个字符串String str=scanner.nextLine();//读取一个整型数int n=scanner.nextInt();//读取一个整型数scanner.close();//有没有都无所谓
     String str1=scanner.next();//一个字符串,遇到空格就会读取结束

判断是否是闰年

//能被4整除但不能被100整除或者能被400整除的年份int year=2000;if(year%4==0&&year%100!=0||year%400==0){System.out.println(year+"是闰年");}else{System.out.println(year+"不是闰年");}

switch 语句

     switch(整数|枚举|字符|字符串){case 内容1 : {内容满足时执行语句;[break;]}case 内容2 : {内容满足时执行语句;[break;]}...default:{内容都不满足时执行语句;[break;]}}

面试题:不能做switch参数的类型
long,float,double,boolean

循环结构

while循环

        //求1到5的阶乘的和int i=1;int sum=0;while (i<=5){int j=1;int ret=1;while(j<=i){ret=ret*j;j++;}sum=sum+ret;i++;}System.out.println(sum);

for循环

代码一:

     //死循环for(;;){         }int i=1;for(;i==1;){//只要中间变量为真就执行            }

代码二:

     int sum = 0;int a = 1;for(int i = 1; i <= 5; i++){a = a * i;sum = sum + a;}System.out.println("1~5的阶乘之和为:" + sum);

do-while循环

do{
循环语句;
}while(循环条件);//分号不能省略

     //求1~10的和int i=1;int sum=0;do {sum=sum+i;//循环体至少会执行一次i++;}while (i<=10);System.out.println(sum);}

循环不加大括号只会执行下面一句,不会执行循环体

break

结束的最近循环,可以在switch中

continue

跳过该次循环,执行下一次循环,仍然在循环中。

        int i=1;while (i<=10){if (i%3==0){i++;continue;System.out.println(i);//报错,continue后的代码不执行了}}}

return

表示跳出方法,跳出main 那么程序结束

goto是一个保留字:随时可能启用

输入输出

1.获取字符串的第一个字符

        String s = "demo";char firstCharacter = s.charAt(0);//字符串转字符String s = "好";char firstCharacter = s.charAt(0);

Java SE 基础知识~流程控制相关推荐

  1. Java SE 基础知识

    Java SE 基础知识 1 2 @(Notes)[J2SE, Notes] VICTORY LOVES PREPARATION. 特别说明: 该文档在马克飞象查阅最佳: 本部分知识还在迭代中,欢迎补 ...

  2. Java SE 基础知识体系梳理

    ## Java SE 基础知识体系梳理 ----------day01------------- (1)计算机的体系结构 (2)Java语言的概述 (3)开发环境的搭建和使用 1.计算机的体系结构(常 ...

  3. JAVA SE基础知识总结

    JAVA基础篇 1_JAVA语言概述 1.1 JAVA的总体概述 1.2 JAVA语言概述 1.2.1 基础常识 1.2.2 计算机语言的发展迭代史 1.2.3 Java语言版本迭代概述 1.2.4 ...

  4. Java复习总结(二)Java SE基础知识

    Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 进阶 线程 锁 JDK 反射 JVM GC io操作和NIO,AIO ...

  5. Java SE 基础知识(一)

    一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...

  6. Java SE基础知识(二)--整数的运算符

    Java SE 是什么,包括哪些内容(二)? 本文内容参考自Java8标准 一.代码运行机制相关的内容: 1.Java中的类型分类("你编程时能使用的类型全部在这里了"): ⑴.J ...

  7. Java SE 基础知识汇总

    目录 一.Java概述 1.1 Java语言背景 1.2 Java语言的三个版本 1.3 Java语言的跨平台原理 1.4 JRE和JDK 1.5 DOS命令 二.Java环境搭建 2.1 环境变量的 ...

  8. python:基础知识—流程控制—函数与模块—数据结构—类与GUI和Turtle—异常处理与文件,概括全书(上万字最详细版)

    这里是一张夜景,给大家放松一下. !!无锡南长街 文章目录 模块一:基础知识 1.python语言 2.常见数字类型 3.字符串 4.数字类型转换 5.标识符命名 6.常见关键字 7.运算符与表达式 ...

  9. JAVA语法基础之流程控制

    在进行程序设计的时候,我们会经常进行逻辑判断,根据不同的结果做不同的事,或者重复做某件事,我们对类似这样的工作称为流程控制.在Java中,流程控制分为两大类:选择和循环.下面就依次来介绍这两类. 一. ...

  10. java 03_Java基础03—流程控制

    流程控制 参考资料:<Java从入门到精通>/明日科技编著. 4版. 北京:清华大学出版社,2016 一.复合语句 Java的复合语句由"{"开始,"}&qu ...

最新文章

  1. 98年建模a题论文_2019年第九届APMCM亚太地区大学生数学建模竞赛 A 题(中英版)...
  2. 记一次OOM问题排查过程
  3. python分离文件名和路径_python 分离文件名和路径以及分离文件名和后缀的方法...
  4. http协议以及防盗链技术
  5. xlsx怎么设置行高列宽_7米面宽的3栋别墅,两款复式进深达到18米,第一款主体只要16万...
  6. 获取程序进程并杀死该进程集
  7. LAMP_PHP配置
  8. matlAB gui 变成c,matlab改变GUI和figure左上角图标的方法,并生成exe文件
  9. 20.6. TeXstudio(LaTeX 编辑器)
  10. 强大的USB协议分析工具
  11. 51单片机c语言音乐盒设计,基于51单片机的音乐盒课程设计开题报告精品
  12. Luogu_P4556 雨天的尾巴【题解】树上差分 线段树合并
  13. 【2022年】安装vm虚拟机unbuntu 服务器版
  14. solr使用 备忘录 草稿
  15. 万洲金业:投资现货黄金的收益与风险如何平衡?
  16. Web 中的“选区”和“光标”需求实现
  17. guava实现MD5加密
  18. 怎么批量提取多个 Excel 文档中的图片
  19. 关于单边账的解释及解决(收单行业)
  20. 【ctf学习】RSA共模攻击

热门文章

  1. spring cloud 全家桶 简单介绍
  2. 无线路由器的dhcp服务器如何设置,无线路由器怎么设置dhcp服务器
  3. HDU 6208 The Dominator of Strings [AC自动机]
  4. Anaconda创建Pytorch虚拟环境(排坑详细)
  5. 手机连接笔记本开启的WiFi一直显示正在获取IP中
  6. 固态硬盘是什么接口_笔记本固态硬盘的接口有哪些?来学习下笔记本SSD小知识...
  7. Python OOP 项目实践:烤地瓜,搬家具
  8. EBU5502 Database Coursework Specifications
  9. 90后小伙自己开发APP年赚10亿,自己开发APP需要什么工具
  10. 优化计算机组策略,7种优化技巧优化Windows 10系统 提高电脑性能