java学习之旅(day.04)
运算符
算术运算符:+ ,- ,* ,/,%(取余或模运算), ++(自增),-- (自减)
赋值运算符:=
关系运算符:>, <,>=, <=, ==, !=(不等于),instanceof
逻辑运算符:&&,||, !
以下了解即可
位运算符:&, |,^ ,~ ,>> ,<<, >>>
条件运算符:?:
扩展赋值运算符:+= ,-= ,*=, /=
public class Demo01 {
public static void main(String[] args) {
//二元运算符
//Ctrl+D:复制当前行到下一行
int a=10;
int b=20;
int c=25;
int d=25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
}
}
================================================================
public class Demo02 {
public static void main(String[] args) {
long a=1231561656L;
int b=123;
short c=10;
byte d=8;
System.out.println(a+b+c+d); //long
System.out.println(b+c+d); //int
System.out.println(c+d); //int
//如果有long,则结果为long
//如果有double,则结果为double
//如果没有long,则结果为int
}
}
=================================================================
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:正确,错误 布尔值
int a=10;
int b=20;
System.out.println(a>b); //false
System.out.println(a==b); //false
System.out.println(a<b); //true
}
}
==================================================================
public class Demo04 {
public static void main(String[] args) {
int a=3;
int b=a++;//执行完这行代码后,先给b赋值,再自增
int c=++a;//执行完这行代码前,先自增,再给c赋值
System.out.println(a); //5
System.out.println(b);//3
System.out.println(c);//5
//幂运算:很多运算,需要借助工具类来操作
//如:2*2*2
double pow=Math.pow(2,3);
System.out.println(pow);
}
}
==================================================================
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
// 与 或 非(非你即我,取反)
boolean a=true;
boolean b=false;
System.out.println("a&&b:"+(a&&b));//逻辑与运算
System.out.println("a||b;"+(a||b));//逻辑或运算
System.out.println("!(a&&b);"+!(a&&b));//逻辑非运算
//如果是真,则为假,若是假,则为真
//短路运算:b&&a,若b为假,则不会再计算后面的b&&a,直接就停止了
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.println(c); //5
System.out.println(d);//false,所以,判断c<4为假,后面的不再执行
==================================================================
package operator;
public class Demo06 {
public static void main(String[] args) {
//位运算
/*
A=0011 1100
B=0000 1101
A&B 0000 1100 上下两个位比较,如果都为1,才为1
A|B 0011 1101 上下位都为0,结果为0,否则为1
~B(取反) 1111 0010
A^B(异或运算)0011 0001 如果两个位置相同,则0,否则为1
2*8怎么运算最快?
<<(左移):相当于*2,>>(右移):相当于/2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
}
}
=====================================================================
package operator;
public class Demo07 {
public static void main(String[] args) {
int a=10;
int b=20;
a+=b; //a=a+b
System.out.println(a); //30
//字符串连接符 +,在+两侧,只要有一侧出现了string类型,
//则会把另一侧也转换为string(字符串),再进行连接
System.out.println(""+a+b);
System.out.println(a+b+"");
//如果字符串“”在+前,后面的会进行拼接
//如果字符串“”在+后,前面的会先进行运算再拼接
}
}
======================================================================
package operator;
//三元运算符
public class Demo08 {
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为 y,否则结果为z
int score =80;
String type =score <60?"不及格": "及格";
System.out.println(type);
}
}
运算符的优先级:
包机制
为了更好的组织类,java提供了包机制,用于区别类名的命名空间
包的本质就是个文件夹
包语句的语法格式:
package pkg1[.pkg2[.pkg3...]]
一般利用公司域名倒置作为包名
如:www.baidu.com 要建的包名为:com.baidu.www
为了能够使用某一个包的成员,我们需要在java程序中明确导入该包,使用import语句可完成此功能
import package1[.package2...].(classname|*);
Java Doc
javadoc命令是用来生成自己API文档的(将注释信息生成一个帮助文档)
参数信息
- @author 作者名
- @version 版本名
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
package com.zhang.base;
/**
* @author zhang
* @version 1.0
* @since 1.8
*/
public class Doc {
String name;
/**
* @author zhang
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
- 使用命令行cmd生成javaDoc文档(格式:javadoc 参数 jav文件)
cmd中输入:javadoc -encoding UTF-8 -charset UTF-8 Doc.java
javadoc 命令
Doc.java:文件名
中间加的参数-encoding UTF-8 -charset UTF-8是为了不使文档乱码,文档中有中文,有时会乱码
- 使用IDEA生成javaDoc文档
java 流程控制
java提供了一个工具类,可以获取用户的输入,进而实现程序和人的交互。java.util.Scanner时java5的新特征,可以通过Scanner类来获取用户的输入
基本语法:
Scanner scanner=new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext()与hasNextLine()判断是否还有输入的语句
package com.zhang.scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描对象,用于接收键盘数据
Scanner scanner =new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户有没有输入字符串
//下面这句也可写为:if (scanner.hasNext())
if (scanner.hasNext()==true){
//使用next方式接收
String str =scanner.next();
System.out.println("输出内容为:"+str);
}
//凡是IO流的类如果不关闭会一直占用资源
scanner.close();//scanner用完后及时关掉,节省空间
}
}
===================================================================
package com.zhang;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
//创建一个扫描对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline方式接收:");
//判断用户有没有输入字符串
//下面这句也可写为:if (scanner.hasNextLine())
if (scanner.hasNextLine() == true) {
//if判断在这可以去掉,上面那个程序也一样
//使用nextLine方式接收
String str = scanner.nextLine();
System.out.println("输出内容为:" + str);
}
//凡是IO流的类如果不关闭会一直占用资源
scanner.close();//scanner用完后及时关掉,节省空间
}
}
next()
- 一定要读取到有效字符后才可以结束输入(要手动输入)
- 对输入有效字符之前遇到的空白,next()会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
- next()不能得到有空格的字符串
- 总之,一句话,在输入有效字符串前任你打空格,但输入了一个字符串后不能再出现空格,如果出现,只输出空格前的部分。
nextLine()
- 以enter作为结束符,也就是说,nextLine()方法返回的是输入回车之前的所有字符
- 可以获得空白
package com.zhang.scanner;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘接收数据
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:");
if (scanner.hasNextInt()) {//看是不是整数
i = scanner.nextInt();
System.out.println("整数数据:" + i);
} else {
System.out.println("输入的不是整数");
}
System.out.println("请输入小数:");
if (scanner.hasNextFloat()) {//看是不是小数
f = scanner.nextFloat();
System.out.println("小数数据:" + f);
} else {
System.out.println("输入的不是小数");
}
scanner.close();
}
}
================================================================
package com.zhang.scanner;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
//输入多个数字并求和与平均数,每输入一个数字用回车确认,
// 通过输入非数字来结束输入并输出执行结果
Scanner scanner= new Scanner(System.in);
double sum=0;
int m=0;//计算输入了多少个数字
while(scanner.hasNextDouble()){
double x=scanner.nextDouble();
m=m+1;
sum=sum+x;
System.out.println("你输入了第"+m+"个数据,当前结果为sum=:"+sum);
}
System.out.println(m+"个数的和为:"+sum);
System.out.println(m+"个数的平均值为:"+(sum/m));
scanner.close();
}
}
顺序结构
顺序结构是java的基本结构,除非特别指明,否则就按顺序一句一句执行,顺序结构是最简单的算法结构
选择结构
- if单选择结构
语法表达:
if(布尔表达式){
//如果布尔表达式为true执行的语句
}
- if双选择结构
语法表达:
if(布尔表达式){
//如果布尔表达式为true执行的语句
}else{
//如果布尔表达式为false执行的语句
}
package com.zhang.structure;
import java.util.Scanner;
public class IfDemo02 {
public static void main(String[] args) {
//考试分数大于60分及格,反之,不及格
Scanner scanner=new Scanner(System.in);
System.out.println("请输入分数:");
int score=scanner.nextInt();
if(score>60){
System.out.println("及格");
}else{
System.out.println("不及格");
}
scanner.close();
}
}
- if多选择结构
语法结构
if(布尔表达式1){
//如果布尔表达式1的值为true执行代码
}else if(布尔表达式2){
//如果布尔表达式2的值为true执行代码
}else if(布尔表达式3){
//如果布尔表达式3的值为true执行代码
}else{
//如果以上布尔表达式都不为true执行代码
}
package com.zhang.structure;
import java.util.Scanner;
public class IfDemo03 {
public static void main(String[] args) {
//考试分数大于60分及格,反之,不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入分数:");
int score=scanner.nextInt();
if(score==100){
System.out.println("恭喜满分");
}else if(score>=90&&score<100){
System.out.println("优秀");
}else if(score>=60&&score<90) {
System.out.println("良好");
}else {
System.out.println("不及格");
}
scanner.close();
}
}
嵌套的if结构:可以在一个if里面嵌套另一个if语句
语法结构:
if(布尔表达式1){
//如果布尔表达式1的值为true执行代码
if(布尔表达式2){
//如果布尔表达式2的值为true执行代码
}
}
switch的多选择结构
java学习之旅(day.04)的更多相关文章
- Java学习之旅开篇:运行机制及环境搭建
在写这篇博客之前,我想对自己进行简单概括:我从事软件开发工作已经三年多了,并且一直在从事.NET相关项目的开发.为什么突然间想学习Java呢?有以下几个原因: 1. 开发程序三年多来,已经对.NET相 ...
- Java学习之旅基础知识篇:面向对象之封装、继承及多态
Java是一种面向对象设计的高级语言,支持继承.封装和多态三大基本特征,首先我们从面向对象两大概念:类和对象(也称为实例)谈起.来看看最基本的类定义语法: /*命名规则: *类名(首字母大写,多个单词 ...
- 第一篇,java学习之旅
在java的这座殿堂中,我才刚刚推开了大门,就像是在岔路口找到了一条,走向前进java大门的路. 下面是一些java算法的问题 第一题: package project.model; import j ...
- Java学习之旅(一):探索extends
鄙人为兴趣爱好,0基础入门学习Java,有些心得想法,记录于此,与君分享. 然毕竟新手,学识尚浅,错误之处,希望多多指正批评,也是对我最大的帮助! 前言:本篇文章,主要讨论在子类继承父类之后,一些继承 ...
- Java学习之旅基础知识篇:数组及引用类型内存分配
在上一篇中,我们已经了解了数组,它是一种引用类型,本篇将详细介绍数组的内存分配等知识点.数组用来存储同一种数据类型的数据,一旦初始化完成,即所占的空间就已固定下来,即使某个元素被清空,但其所在空间仍然 ...
- Java学习之旅基础知识篇:数据类型及流程控制
经过开篇对Java运行机制及相关环境搭建,本篇主要讨论Java程序开发的基础知识点,我简单的梳理一下.在讲解数据类型之前,我顺便提及一下Java注释:单行注释.多行注释以及文档注释,这里重点强调文档注 ...
- 我的java学习之旅--一些基础
(因为我粗略学过C,C++,Python,了解过他们的一些语法,所以为了使得java的入门更为顺畅,便会忽略一些和C语法相类似的地方,着重点明一些java自己的特色之处.也减轻一下自己写文字的负担.) ...
- Java学习之旅(二):生病的狗1(逻辑推导)
前言:本篇文章属于个人笔记,例化了一些代码,不知是否合理,请指教. 中午看到一位同学的面试题,觉得很烧脑,烧脑不能一个人烧,要大家一起烧. 村子中有50个人,每人有一条狗.在这50条狗中有病狗(这种病 ...
- java学习之旅
jar文件其实就是一个压缩包,里面包含很多class文件(一个class文件是一个类的字节码).方便在网络上传输.可以规定版本号,更容易进行版本控制. var只能在方法内使用,不能用于定义成员变量. ...
- 面向对象编程(OOP)的五大特征-java学习之旅(1)
这是Alan Kay关于第一个成功的面向对象语言SmallTalk的总结: 1.所有的东西都是对象.可将对象想象成一种新型的变量:它保存着数据,但是可要求它对自身进行操作,理论上讲,可从要解决的问题身 ...
随机推荐
- 修复HTTP动词篡改导致的认证旁路问题的方法
本文于2016年4月完成,发布在个人博客网站上. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 诡异的问题 分析AppScan扫描报告的时候,发现报告里提示" ...
- 开源机密计算平台:蓬莱-OpenHarmony
演讲嘉宾 | 杜 东 回顾整理 | 廖 涛 排版校对 | 李萍萍 嘉宾简介 杜东,上海交通大学助理研究员.中国计算机学会CCF会员,ACM会员.研究兴趣为操作系统与体系结构.服务器无感知(Se ...
- HarmonyOS如何使用异步并发能力进行开发
一.并发概述 并发是指在同一时间段内,能够处理多个任务的能力.为了提升应用的响应速度与帧率,以及防止耗时任务对主线程的干扰,HarmonyOS系统提供了异步并发和多线程并发两种处理策略. ● 异步 ...
- Leetcode-栈的压入弹出序列
/* 输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1] 输出:true 解释:我们可以按以下顺序执行: push(1), push(2), push(3), ...
- 重新整理 .net core 实践篇—————微服务的桥梁EventBus[三十一]
前言 简单介绍一下EventBus. 正文 EventBus 也就是集成事件,用于服务与服务之间的通信. 比如说我们的订单处理事件,当订单处理完毕后,我们如果通过api马上去调用后续接口. 比如说订单 ...
- PTA三次作业
1.前言: 第一次作业难度较大,从无到有的设计,涉及到的主要类有Paper,Question,AnswerPaper,Main,主要题目方向为字符串判断与字符串处理(提取有效信息),判断对错算总分,配 ...
- Java实现银行存取款
"感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 代码 `` ...
- 【笔记】go语言--切片的操作
go语言--切片的操作 接上篇切片的概念开始 //Slice添加元素 arr := [...]int{0,1,2,3,4,5,6,7} s1 := arr[2:6] s2 := s1[3:5]//[5 ...
- 支付宝移动端 Hybrid 解决方案探索与实践
支付宝 Hybrid 方案建设与演进 目前支付宝有 2 套 Hybrid 方案: HTML5 容器与小程序.小程序是最近几年才出来,H5 容器已经有了很长时间的历史,所以我们就先从 H5 容器说起. ...
- 阿里云 EventBridge 事件驱动架构实践
简介:我们认为 EventBridge 是云原生时代新的计算驱动力,这些数据可以驱动云的计算能力,创造更多业务价值. 作者:周新宇 本文内容整理自 中国开源年会 演讲 首先做一个自我介绍,我是 Ro ...