Java基础1,入门基础知识

时间:2022-09-26 23:26:41

本文知识点(目录):

1、java简介
    2、环境的搭建
    3、关键字
    4、标识符
    5、注释
    6、常量
    7、进制的转换
    8、变量
    9、数据类型的转换
    10、运算符



1、Java简介

语言起源

Java是SUN ( Stanford University Network 斯坦福大学网络公司 ) 1995年推出的一门高级编程语言。Java名称的来源Java最初被命名为Oak,目标在于家用电器等小型系统的编程语言,随着市场的变化,SUN公司着眼于网络应用的开发。Java的名字的来源:Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。

1995年5月23日,JAVA语言诞生  (雏形)

1996年,1997分别推出JDK1.0,JDK1.1版

1999年,JAVA被分成J2SE,J2EE,J2ME

2000年,JDK1.4发布

2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0

2005年,JAVA版本正式更名为JAVAEE,JAVASE, JAVAME

2006年12月,SUN公司发布JRE6.0   

2009年04月20日,Oracle以74亿美元收购Sun。取得java的版权。

2010年9月,JDK7.0已经发布,增加了简单闭包功能。   

2011年7月,甲骨文公司发布java7的正式版。

1.1、常见的dos命令

盘符: 进入指定的盘符下。

dir : 列出当前目录下的文件以及文件夹

md : 创建目录

rd : 删除目录    注意:rd不能删除非空的文件夹,而且只能用于删除文件夹。

cd : 进入指定目录

cd.. : 退回到上一级目录

cd \ : 退回到根目录

echo "hello java">a.txt  写入文本到指定文件  

type a.txt :显示文件内容命令

del : 删除文件    注意:不能删除文件夹,只能删除文件。

exit : 推出dos命令行

cls : 通知计算机将当前的命令清空

* :  是通配符。

tab : 命令补全。

方向键:上下键是找回上次你写过的命令。

1.2、java语言重要特性之跨平台 

1.2.1 跨平台

什么是跨平台(计算机系统),跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不信赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。

1.2.2 Java的跨平台

“write once run anywhere”

Java的跨平台是相对于其他编程语言而言的,通过Java语言编写的应用程序在不同的系统平台上都可以运行。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。在windows编译的c语言程序,在linux下是不能运行的。当然在linux下编译的c语言程序在windows下也是不能运行的。而Java语言在不同平台上运行时不需要重新编译。

Java跨平台的原理:Java的跨平台是通过Java虚拟机(JVM)来实现的。

1.2.3 Java虚拟机(JVM

Java Virtual Machine 一个软件模拟的计算机。Java源程序想象成我们的C源程序,Java源程序编译后生成的字节码(.class)就相当于C源程序编译后的二进制可执行文件。JVM虚拟机相当于计算机系统(操作系统+硬件环境),Java解释器相当于CPU。

.exe文件直接在windows操作系统下运行,在CPU上运行的是机器码(.exe文件)

.class字节码文件是运行在JVM虚拟机下的,在Java解释器上运行的是Java字节码。

Java解释器相当于运行Java字节码的“CPU”,但该“CPU”不是通过硬件实现的,而是用软件实现的。Java解释器实际上就是特定的平台下的一 个应用程序。只要实现了特定平台下的解释器程序,Java字节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本。当前,并不是在所有的平台 下都有相应Java解释器程序,这也是Java并不能在所有的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行。

Java基础1,入门基础知识

Java基础1,入门基础知识

1.3、Java的三大平台

JavaSE

   Java SE(Java Platform,Standard Edition)。Java SE 以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java 应用程序。Java SE 包含了支持Java Web 服务开发的类,并为Java Platform,Enterprise Edition(Java EE)提供基础。
例子:类似QQ、微信、飞秋、电脑管家这样子的桌面应用。

Java EE

   Java EE(Java Platform,Enterprise Edition)。这个版本以前称为J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和Web 2.0 应用程序。

Java ME

   Java ME(Java Platform,Micro Edition)。这个版本以前称为J2ME,也叫K-JAVA。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

2、环境的搭建

2.1、JDK简介:

JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。JDK是学好Java的第一步。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。

2.2、JDK的安装

网址:http://www.oracle.com/index.htmlhttp://www.java.sun.com

2.3JDK目录介绍

  1. bin 目录:存放Java的编译器、解释器等工具(可执行文件)。
  2. db 目录:JDK7附带的一个轻量级的数据库,名字叫做Derby。
  3. include 目录:存放的调用系统资源的接口文件。
  4. jre 目录:存放Java运行环境文件。
  5. lib 目录:存放Java的类库文件。
  6. src.zip文件:JDK提供的类的源代码。

附:

Java基础1,入门基础知识

安装JDK需要注意的事项:

  1. 安装路径中不要包含中文
  2. 安装路径中不要包含空格。

2.4、JRE简

JRE  Java Runtime Environment Java运行环境。包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

2.5、配置path环境变量

问题:目前在控制台窗口下只能在jdk安装目录的bin目录下才能使用jdk的开发工具在控,如果想制台窗口下想要在任意目录下都可以使用javac与java或者jdk其他的开发工具那应该怎么做呢?

1.在dos窗口敲上javac

Java基础1,入门基础知识

我们在随意的一个目录敲javac或者java命令时候,发现dos窗口显示这个不是内部命令,然后我们在上面敲上notepad命令时,打开了一个记事本的程序,但是在当前目录下页没有存在notepad.exe的可执行文件,那么为什么能启动呢?

错误原因:原来在dos窗口上写上一个命令时候,如果在当前目录下找不到指定的可执行文件,那么它会根据path环境变量保存的路径去搜索是否存在这个可执行文件,如果存在则启动该程序,否则就没有这个命令。

2.解决方法:

1、 进入jdk的安装目录的bin目录。

2、 在dos命令上敲javac。(如果出现了以上的图信息则配置成功)

Java基础1,入门基础知识

3.为什么要配置path环境变量

因为在jdk下bin文件夹中有很多我们在开发中要使用的工具,如java.exe,javac.exe,jar.ex等,那么我们在使用时,想要在电脑的任意位置下使用这些java开发工具,那么我们就需有把这些工具所在的路径配置到系统的环境变量中,当我们使用时,系统可以帮且我们找到这些命令。

4.如何配置path环境变量

我们将jdk下bin的路径进行复制

在我们电脑-----à属性-----à高级-----à环境变量---------àpath这项

将bin的路径放置到path的最前边,别忘记加分号.

Java基础1,入门基础知识

Java基础1,入门基础知识

5.JAVA_HOME环境的配置

有时候可能需要更换Jdk的目录,但是经常修改path的值可能会不小心修改其他的路径,解决方法:

1、 创建一个JAVA_HOME的变量。

Java基础1,入门基础知识

2、 JAVA_HOME的值为JDK的安装目录。

3、 配置path路径:%JAVA_HOME%/bin。

Java基础1,入门基础知识

以后需要更换JDK的目录时,只需要更换JAVA_HOME的目录即可。

设置临时变量:

set : 查看所有的环境变量信息。

set  变量名 :查看具体一个环境变量的值。

set  变量名=:清空一个环境变量的值。

set  变量名=具体值 :给指定变量定义具体值。

想要在原有环境变量值基础上添加新值呢?

首先,通过%变量名%操作符获取到原有环境变量的值。

然后加上新值后在定义给该变量名即可

举例:给path环境变量加入新值

set  path=新值;%path%

注意:这种配置方式只在当前dos窗口有效。窗口关闭,配置消失。

2.6、 classpath环境变量

1、classpath的作用: 作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,一旦配置了classpath路径信息的时候,jvm与java编译器都会根据classpath指定的路径去寻找class文件。

2、如何设置当前目录(.)

set classpath=.;设置路径 与 set classpath=设置路径;.有什么区别?

“.”在前面的时候,java虚拟机会先从当前路径去寻找class文件,然后再到指定的路径去需找。如果”.”在后面,java虚拟机则会先寻找指定好的路径,然后再在当前的路径去寻找。

设置classpath的时候要加上 ; 就会在当前目录下查找。

3、关键字

3.1 关键字的概述

Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。

3.2 常见的关键字

Java基础1,入门基础知识

Java基础1,入门基础知识

4、标识符

4.1 什么是标识符

就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Demo,就是我们定义的类名。类名就属于标识符的一种。

标识符除了应用在类名上,还可以用在变量、函数名、包名上。

4.2 标识符必须遵循以下规则

  1. 标识符由26个英文字符大小写(a~z,A~Z)、数字(0~9)、下划线(_)和美元符号($)组成。
  2. 不能以数字开头,不能是关键字
  3. 严格区分大小写
  4. 标识符的可以为任意长度

4.3  标识符案例

4.3.1 合法的标识符

ComputeArea,radius,area $itcast   _itcast  gz_itcast

注意:由于Java严格区分大小写,ITCAST和itcast是完全不同的标识符

4.3.2 非法标识符

  1. class (关键字)
  2. 100java(不能以数字开头)
  3. Hello java (空格不是组成标识符的元素)
  4. 包名

4.3.3 Java中的标识符命名规范

1、包名

  多个单词组成时所有字母小写(例:package  com.itcast)

2、类名和接口

  多个单词组成时所有单词的首字母大写(例:HelloWorld)

3、变量名和函数名

  多个单词组成时第一个单词首字母小写,其他单词首字母大写(例:lastAccessTime、getTime)。

4、常量名

  多个单词组成时,字母全部大写,多个单词之间使用_分隔(例:INTEGER_CACHE)

注意:只是为了增加规范性、可读性而做的一种约定,标识符在定义的时候最好见名知意,提高代码阅读性。

5、注释

5.1 注释的作用

通过注释提高程序的可读性,是java程序的条理更加清晰,易于区分代码行与注释行。另外通常在程序开头加入作者,时间,版本,要实现的功能等内容注释,方便后来的维护以及程序员的交流。

5.2 注释的种类

1.单行注释(line comment)用//表示,编译器看到//会忽略该行//后的所文本

2.多行注释 (block comment)用/**/表示,编译器看到/*时会搜索接下来的*/,忽略掉/**/之间的文本。

3.文档注释用 /**  */表示,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

文档注释(编写软件说明书)

1、需要使用sum给我们提供的javadoc工具生成一个html的说明文档。

2、只能抽取public的属性或者方法内容。

格式:

  Javadoc -d 指定存储文档的路径 -version -author(可选) 目标文件

Java基础1,入门基础知识

@author 作者

@version 版本

@param 方法的参数

@return 返回值

注释的使用细节:三种注释可以出现在程序的任何地方,但是不推荐找任意位置。

注意:文档注释只能出现在类、属性、方法的上面。

6、常量 

6.1 常量的概述

常量是指在程序运行过程中其值不能改变的量。

6.2 常量类型

Java中常量的分类:

整数常量 : 所有整数

小数常量 : 所有小数

布尔常量 : 只有true和false

字符常量 :使用’’引起来的单个字符

字符串常量 :使用“”引起来的字符序列,“”  、“a” 、” ”

null常量 : 只有一个值null

6.3 char类型

char类型表示的是单个字符类型,任何数据使用单引号括起来的都是表示字符。字符只能有一个字符。

注意:特殊字符的转义序列:转义字符

转义字符的概述:

特殊字符使用”\”把其转化成字符的本身输出,那么使用”\”的字符称作为转移字符。

需求:使用输出语句,打印出带引号的信息例如输出。

System.out.println("teacher said"java is fun""); 编译是无法正常通过的。语法有错误,编译器读到第二个引号就认为是字符串的结束,剩余的不知道怎么处理。如何解决这个问题:java中使用转义字符来表示特殊的字符。一个转义字符以反斜杠(\)开始。

问题:想要打印带引号的字符串怎么办,就可以使用反斜杠(\)后跟字符,这个反斜杠就是转义字符。

Java基础1,入门基础知识

\r 表示接受键盘输入,相当于按下回车。

\n 表示换行。

\t  制表符,相当于Table键(相当于四个空格)

\b 退格键,相当于Back Space

\’  单引号

\’’ 双引号

\\ 表示一个斜跨

上述问问题解决:System.out.println("teacher said\"java is fun\"");

注意:换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符

6.4 boolean 类型

boolean由数学家Geogore Boole 发明

boolean 类型用来存储布尔值,在java中布尔值只有2个,true和false。

boolean flag = true;

flag = false;

Java中这8种基本数据类型都是小写的。

7、进制的转换

进制:进制是一种记数方式 ,可以用有限的数字符号代表所有的数值。由特定的数值组成。

7.1 整型的表现形式

  1. 十进制: 都是以0-9这九个数字组成,不能以0开头。
  2. 二进制: 由0和1两个数字组成。
  3. 八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始(注:数字0,而非字母o)。
  4. 十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以0x开始(注:数字0,而非字母o)。

十进制转二进制的转换原理:除以2,反向取余数,直到商为0终止。

Java基础1,入门基础知识

二进制转十进制的转换原理:就是用二进制数(从右到左)乘以2的n次方,n从0开始,每次递增

如:二进制1001,转十进制:1*2^0 + 0*2^1 + 0*2^2 + 1*2^3 = 1+0+0+8 = 9

7.2 八进制的特点

由数字0-7组成。即使用三个开关表示一个八进制数。

十进制转换八进制原理:就是用十进制的数字不断除于8,取余数。

Java基础1,入门基础知识

八进制转十进制原理: 用八进制数(从右到左)不断乘以8的n次方,n从0开始,每次递增1。

如:八进制21,转十进制:1*8^0 + 2*8^1 = 1+16 = 17

二进制转八进制:

Java基础1,入门基础知识

八进制转二进制:(比如226)

Java基础1,入门基础知识

7.3 十进制与十六进制之间的转换

十六进制特点:由0~9 a(10) b(11) c(12) d(13) e(14) f(15)组成。

十进制转十六进制原理:就是不断除以16,取余数。

Java基础1,入门基础知识

十六进制转十进制:

如:十六进制100,转十进制:0*16^0 + 0*16^1 + 1*16^2= 0+0+16*16 = 256

二进制转十六进制:

Java基础1,入门基础知识

Java基础1,入门基础知识

8、变量

8.1 变量的概述

1.变量的概述

用于存储可变数据的容器。

2.变量存在的意义

计算机主要用于处理生活中的数据,由于生活中存在大量的可变数据,那么计算机就必须具备存储可变数据的能力。

比如:

1.时间每一秒都在发生变化,根据不同的时间要有不同的处理方式。

2.气象站会根据温度发布天气预报信号。

3.变量的特点

正常情况下牛奶盒装的都是牛奶,而且会根据牛奶的多少去决定要多大的容量的牛奶盒,A和B两位同学同时把牛奶盒放进篮子里面,但是需要区分两个牛奶盒是谁的,都需要在牛奶盒上做一个标志。

特点:

  1. 必须要有大小
  2. 存储一定格式的可变数据
  3. 必须要有名字

8.2 变量的数据类型(四类八种)

Java基础1,入门基础知识

1. 整型

byte:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128~127,默认值0

short:短整型,在内存中占2个字节(16 bit),取值范围-32768~32717,默认值0

int:整型,用于存储整数,在内存中占4个字节,取值范围-2147483648~2147483647,默认值0

long:长整型,在内存中占8个字节,取值范围-2^63~2^63-1,默认值0L

Java基础1,入门基础知识

如果一个数值没有采取特殊的处理,那么该整数默认的类型是int。

可以使用数值后面添加L或小写L改变默认的整数类型。

2. 浮点型

    float  代表四个字节的大小  32bit

    double 代表八个字节的大小  64bit

java程序中所有的小数默认的类型是double类型,所以需要使用特殊的符号改变默认的小数类型。

3. 字符型

    char   代表两个字节的大小  16bit  2(16)

原理:将字符映射为码表中对应的十进制数据加以存储。

4. 布尔型

     boolean  占一个字节。只有true与false两个值。

8.3 变量的声明

格式: 数据类型 变量名字1 , 变量名字2 ,……变量名字n ,;

案例:

int i 声明了一个整形的变量。

double d 声明了一个double数据类型的变量

float  f 声明了一个float数据类型的变量。

备注:变量名的首字母都一般都是以小写字母开始。

8.4 变量的初始化(方式

初始化方式1: 数据类型 变量名字 =  数值。

初始化方式2: 数据类型 变量名字 , 变量名字 =  数值。

案例:

方式1: double d = 3.14;

方式2: double d ;  d = 3.14 ;

9、 java数据类型的转换

Java中可以进行不同数据类型的加减乘除运算吗?是可以的。在算术运算符中已经体验过如果两个整数(int)相除会去掉小数部分。如果需要保留小数部分,可以让除数或者被除数变为double类型的(5变为5.0)。其实Java是自动的将int的那个数变为了double类型了也就是Java自动的将整数变为了浮点数。例如5/2.0 其实是5.0/2.0

9.1、 自动类型转换(也叫隐式类型转换)

可以将一个数赋值给更大数值范围的变量,例如可以经byte 变量赋值给short变量可以将short变量赋值给int变量可以将int变量赋值给long变量。

Java内部其实做了工作就是自动将数值进行了类型提升,就叫做自动类型转换(也叫隐式类型转换)

    byte b = 1; //
short s = b; //00000000 00000001
int i = s;
long lon = i;
double d = lon; //1.0

自动类型转换(也叫隐式类型转换)

要实现自动类型的转换,需要满足两个条件,第一两种类型彼此兼容,第二目标类型取

值范围必须大于源类型。所有的数字类型,包括整形和浮点型彼此都可以进行转换。

例如:

    byte b=100;
int x=b;
System.out.println(x);//程序把b结果自动转换为int类型。

9.2、 强制类型转换(也叫显式类型转换)

不可以将一个数值赋给范围更小数值范围的变量,除非进行类型转换。

    byte b = 100;
b = b + 2;
System.out.println(b);

上述例子发生了什么,发生了类型转换。

b+2 遇到了加法运算,2默认是int类型,byte类型b变量存储的值自动类型提升为了int类型。执行完加法运算后的结果就是int类型,想要将int的类型值放入到byte类型变量b中,无法放入,编译报错。

    byte b=1;
b=(byte)(b+2);

当两种类型彼此不兼容,或者目标类型取值范围小于源类型(目标是byte源是int)

无法自动转换,此时就需要进行强制类型转换。

9.3 强制类型转换需要注意: 

损失精度!!!

    int a=128;
byte b=(byte)a;
System.out.println(b);//-128
/*
* 此时的强转已经造成了数值的不准确
*/

Java基础1,入门基础知识

再次分析此行代码

    byte b = 100;
b = b + 2;
System.out.println(b);

编译:提示如下错误。

Java基础1,入门基础知识

9.4、类型转换的原理

可以把byte 理解为1两的碗,short 2两的碗,int 4两的碗,long 8两的碗。1两碗的满碗酒可以倒入 2两 4两 8两的碗中。但是 4两碗的酒倒入1两碗的酒就有一些问题。

9.5、 什么时候要用强制类型转换

比如小数部分只想保留整数部分.

一定要清楚要转换的数据在转换后数据的范围内否则会损失精度.

public static void main(String[] args) {
byte b = 100;
b = (byte) (b + 2);
System.out.println(b); // 102
//舍弃小数部分
double d=5.5;
int num=(int)d;
}

9.6、 表达式的数据类型自动提升

算术表达式,逻辑表达式

所有的byte型、short型和char的值将被提升到int型。

如果一个操作数是long型,计算结果就是long型;

如果一个操作数是float型,计算结果就是float型;

如果一个操作数是double型,计算结果就是double型。

分析 System.out.println(‘a’+1)结果?

自动类型提升

  byte b = 3;
int x = 4;
x = x + b;// b会自动提升为int 类型参与运算。
System.out.println(x);//

强制类型转换

    byte b = 2;
/*
* 强制类型转换,强制将b+2强制转换为byte类型,再赋值给b
*/
b = (byte) (b + 2);
System.out.println(b);//

10 java运算符

10.1.算术运算符

Java基础1,入门基础知识

正负号(+,-)

Java基础1,入门基础知识

除法

Java基础1,入门基础知识

%取模

  求余数

    Java基础1,入门基础知识

  取模的正负取决与被除数:

    Java基础1,入门基础知识

 自增

(++)前自增:先自增完毕,再运算整个表达式,语句分号前面的都是运算表达式;

Java基础1,入门基础知识

后自增,先运算完整个表达式(分号前面的都是表达式),再进行自增;

Java基础1,入门基础知识

结论:

如果运算符在变量的前面,则该变量自增1或者自减1,然后返回的是变量的新值,如

果运算符在变量的后面,则变量也会自增或者自减1,但是返回的是变量原来的值。++在前就是先运算,再取值,++在后就是先取值,再运算。

10.2 赋值运算符

Java基础1,入门基础知识

a+=b 可以想象成 a=a+b;

变量声明完了之后,可以使用赋值语句(assignment statement)给变量赋一个值,Java中使用等号(=)作为基本的赋值运算符(assignment operator),

格式如下:

variable = expression;
变量 = 表达式;

变量我们已经知道如何声明,表达式具体如何定义?

表达式的定义:

表达式涉及到值(常量),变量和通过运算符计算出的值,以及他们组合在一起计算出的新值。

x =y+1;

例如:

public static void main(String[] args) {
int x = 1; // 声明int变量x, 赋值1给变量x
int y = 0; // 声明int变量y, 赋值0给变量y
double area; // 声明double变量area
double radius = 1.0; // 声明double变量radius,并赋值1.0给变量radius
x = 5 * (3 / 2) + 3 * 2; // 将=右半部分表达式的计算结果赋值给变量x
x = y + 1; // 将变量y和1的求和的值赋值给变量x
area = radius * radius * 3.14159; // 将计算面积的值赋值给变量area
}

10.3 比较运算符

如何比较两个值?使用比较运算符 3和5谁大,在java中如何比较?

比较运算符比较的两边操作数,结果都是boolean的,只有true和false两种结果。

Java基础1,入门基础知识

注意的细节:

1.使用比较运算符的时候,要求两种数据类型必须一致。

byte、short、char 会自动提升至int。

Java基础1,入门基础知识

10.4 逻辑运算符

什么是逻辑运算符?连接比较运算符的符号称之为逻辑运算符。那么为什么要连接比较运算符? 举例:当你去公司应聘,招聘要求,男性(判断为真),并且开发经验1年(判断为假)那么,我们还适合去面试吗,不能,因为只满足了一项,总体是不满足的(总体结果为假)。

逻辑运算符用于对boolean型结果的表达式进行运算,运算的结果都是boolean型。我们的比较运算符只能进行一次判断,对于对此判断无能为力,那么逻辑运算符就可以经将较运算符连接起来。

Java基础1,入门基础知识

逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。

“&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

“|”和“||”的区别同理,双或时,左边为真右边不参与运算。

“ ^ ”异或与“|”或的不同之处是:当左右都为true时,结果为false。

& :与   |: 或   ^: 异或   !: 非

1、 & 与

  true  & true  = true ;
false & true = false;
true & false = false;
false & false = false;

总结 & 符号特点

& : 只要两边的boolean 表达式结果,有一个false.那么结果就是false

只有两边都为true ,将结果为true.

2、| 或

 true   |  true   = true;
true | false = true;
false | true = true;
false | false = false;

总结 | : 两边只要有一个为真结果就为真,当两边同为假时结果才为假.

3、^  异或

  true   ^  true  = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;

^ : 两边相同结果是false

两边不同结果是true;

4、! 非

!true  = false
!false = true

5、&&  短路

研究发现,&运算只有两边全为真的时候,结果才为真,那么当左边为假的时候就没有必要在进行判断,&&就产生了。

int a =4;

a >3 && a< 6;

a >3 & a< 6 ;

在这种情况下世没有区别的

如果:

a =2

a >3 & a< 6    2大于 3 为假, 接着运算 2 小于6 为真,总的结果为假

a >3 && a< 6;   此时a 不大于3 结果为false 右边不运算了.即短路.所以&& 比& 效率稍微高了一点.

public static void main(String[] args) {
int x = 0;
int y = 1;
if (x == 0 && y == 1) {
System.out.println(x + y);
}
}

10.5 位运算符

Java基础1,入门基础知识

规则:

可以把1当做true 0当做false

只有参与运算的两位都为1,&运算的结果才为1,否则就为0。

只有参加运算的两位都是0,| 运算的结果才是0,否则都是1。

只有参加运算的两位不同,^ 运算的结果才为1,否则就为0。

1、& 与运算

& 参见运算的两位数都为1,&运算符结果才为1,否则就为0。

Java基础1,入门基础知识

2、| 或运算

| 参与运算的两位都为0,|运算的结果才为0,否则就为1。

Java基础1,入门基础知识

3、^ 异或运算

^只有参加运算的两位不同,^运算的结果才为1,否则就为0。

Java基础1,入门基础知识

4、 ~ 反码

就是取反,二进制只有1和0,取反就是如果为1,取反就是0,如果是0,取反就是1。

Java基础1,入门基础知识

System.out.println(~6);//-7

结论:当参与取反的数值是正数时,把对应的值加上负号,再-1;

当参与取反的数值是负数时,把对应的值加上负号,再-1;

负数的表现形式就是对应的正数取反,再加1。负数的最高位肯定是1。

5、负数表示

负数对应的正数的二进制-1,然后取反。

Java基础1,入门基础知识

6、异或特点

一个数异或同一个数两次,结果还是那个数.  用处一个简单的加密思想.

Java基础1,入门基础知识

除了这些位运算操作,还可以对数据按二进制位进行移位操作,Java的移位运算符有三种。

10.6 移位操作符

Java基础1,入门基础知识

Java基础1,入门基础知识

案例:

1、左移 (算术移位)

3<< 2 是如何在计算机里是实现的?

首先将3转换为2进制,

Java基础1,入门基础知识

结论:左移就相当于乘以2的位移个数次幂.

2、右移

Java基础1,入门基础知识

结论:右移就相当于除以2的位移个数次幂.

结论:一个数往左移越移越大,往右边移越来越小.

推论

左移规律

3<<2=12;  3<<1=6 ;  3<<3=24;

3*4=12 ;  3*2=6;    3*8=24;

3*22=12;   3*21=6    3*23 =24;

结论往左移几位就是乘以2的几次幂。

右移规律

6>>2=1  ;6>>1=3 ;

6/4=1   ; 6/2=3 ;

右移两位就是除以 2的2次方,右移一位就是除以2的一次方。

总结 :

  >> 是除以2的移动位数次幂

  << 是乘以2的移动位数次幂

用处:最快的运算是位运算。

3、无符号右移 (逻辑移位)

通过演示发现右移时高位就空了出来, >> 右移时高位补什么要按照原有 数据的最高位来决定。

1111-1111 1111-1111 1111-1111 1111-1010    -6>>2

1111-1111 1111-1111 1111-1111 1111-0010

最高位补什么要看原有最高位是什么

那么使用>> 后原来是最高位1 的那么空出来的最高位还是1 的,是0的还是0。

如果使用>>> 无论最高位是0还是1 空余最高位都拿0 补,这就是无符号右移。

1111-1111 1111-1111 1111-1111 1111-1010    -6>>>2

001111-1111 1111-1111 1111-1111 1111-10

结果是;1073741822

10.7 三元运算符(也叫三目运算符)

格式:(条件表达式)?表达式1:表达式2;

解析:

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

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

示例:

1获取两个数中大数。

int x = 1;
int y = 2;
int z;
z = x > y ? x : y;
System.out.println(z); //

10.8 运算符的优先级与结合性

Java基础1,入门基础知识

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:http://www.cnblogs.com/dshore123/p/8592125.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

 
 
 
G
M
T
 
检测语言
世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
信德语
修纳语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
卢森堡语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
吉尔吉斯语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
夏威夷语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
库尔德语
弗里西语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
普什图语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
科萨
科西嘉语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苏格兰盖尔语
苗语
英语
荷兰语
菲律宾语
萨摩亚语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿姆哈拉语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
  世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
信德语
修纳语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
卢森堡语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
吉尔吉斯语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
夏威夷语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
库尔德语
弗里西语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
普什图语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
科萨
科西嘉语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苏格兰盖尔语
苗语
英语
荷兰语
菲律宾语
萨摩亚语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿姆哈拉语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
         
 
 
 
文本转语音功能仅限200个字符
 
  选项 : 历史 : 反馈 : Donate 关闭

Java基础1,入门基础知识的更多相关文章

  1. Java web struct入门基础知识

    1.Struts2的前身是Opensymphony的Webwork2,实际上Strut和Webwork2合并后形成Struts2.   2.一个HelloWord示例 1)创建Web应用,所需要的Ja ...

  2. Python 基础:入门必备知识

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:程序员野客 先看下咱们的基础目录1 标识符2 关键字3 引号4 编码5 ...

  3. java爬虫之入门基础

    相比于C#,java爬虫,python爬虫更为方便简要,首先呢,python的urllib2包提供了较为完整的访问网页文档的API,再者呢对于摘下来的文章,python的beautifulsoap提供 ...

  4. python基础之入门基础

    编程语言分类 机器语言 使用二进制代码直接编程,直接与硬件交互,执行速度非常快,灵活,但是开发难度高,开发效率低下,缺乏移植性. 汇编语言 对机器语言指令进行了英文封装,较机器语言容易记忆,直接与硬件 ...

  5. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  6. 第87节:Java中的Bootstrap基础与SQL入门

    第87节:Java中的Bootstrap基础与SQL入门 前言复习 什么是JQ? : write less do more 写更少的代码,做更多的事 找出所有兄弟: $("div" ...

  7. 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

    salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...

  8. 答好友困惑:Java零基础如何入门,不知道怎么学,迷茫ING

    作者:程序员小跃 几个星期之前,我在知乎上看到一个提问,说是:对于完全没有经验零基础自身的数学底子也很弱学习Java应该怎么学习呢?想着类似的问题我也有过回答,并且反馈还是蛮好的,就参考之前的思路回答 ...

  9. USB入门基础知识(转)

    源:USB入门基础知识 相关名词: 主机(Host) 设备(Device) 接口(Interface) 管道(Pipe) 管道是主机与设备端点数据传输的连接通道,代表了主机的数据缓冲区与设备端点之间交 ...

随机推荐

  1. VG&period;net矢量图和矢量动画开发平台拓扑图软件免费下载

    VG.net拓扑图软件是一个基于.net平台的矢量图开发工具,可广泛应用于包括:电力.军工.煤炭.化工.科研.能源等各种监控软件.工作流设计器.电力.化工.煤炭.工控组态软件.仿真.地理信息系统.工作 ...

  2. JS图片切换效果

    源地址:http://www.codefans.net/jscss/code/4699.shtml <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

  3. 用上Google才是正事 分享几个訪问Google的IP和域名

    通过VPN或者GAE等代理进行訪问,GAE下载请移步<GAE 3.1.18 最新版本号下载 用上Google才是正事>.这是大家通经常使用的办法.也有同学们不愿意使用代理软件.那今天来分享 ...

  4. 玩玩kafka1 单机安装

    今天主要来一遍kafka单机版的安装,比较简单易上手,关于kafka的介绍我就不贴了,大家可以自行搜索 1.首先将tgz包传到centos目录下(这里使用xftp工具) ok后查看一下tgz包是否已经 ...

  5. 宝塔MySQL服务自动停止重启的解决方法

    现象:客户端MYSQL无法链接 提示超过 max_connections 如果重新启动MYSQL或停止MYSQL 及重新启动系统时 需要很长时间 1个小进左右 问题描述 服务器上安装的 MySQL,会 ...

  6. jQuery 实现点击页面其他地方隐藏菜单

    点击页面其它地方隐藏id为messageList的div 代码: $('body').delegate("#message", 'click', function(e) { var ...

  7. Centos下安装破解confluence6&period;3的操作记录

    confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它可以实现团队成员之间的协作和知识共享.现在大多数公司都会部署一套confluence,用作内部wiki.现在co ...

  8. 老代码&colon;js实现二级城市联动&lpar;MVC&rpar;

    FormViewCity 为mvc控制器传给view的数据,包括一个MyCitys集合字段. <%@ Page Title="" Language="C#&quot ...

  9. C&num; 创建精简版IIS

    1. 方法 一 using System; using System.Collections.Generic; using System.Text; using System.Threading; u ...

  10. tensorflow session 和 graph

    graph即tf.Graph(),session即tf.Session(),很多人经常将两者混淆,其实二者完全不是同一个东西. graph定义了计算方式,是一些加减乘除等运算的组合,类似于一个函数.它 ...