疯狂Java基础Day1
——每过一遍基础,都是一次提升!
太多遗忘了,慢慢补。。。
推一个Java学习教程--->b站搜:狂神说Java系列(排序完毕)
推荐原因:讲的不错,会涉及到底层,也会讲讲面试。
一、注释
主要掌握单行注释、多行注释和JavaDoc文档注释
谨记在心的两句话:
- 书写注释是一个好习惯
- 写代码必须注意规范
/**
* @author 我在吃大西瓜呢
* (JavaDoc文档注释)
*/
public class HelloWorld {
public static void main(String[] args) {
// 输出一个hello world (单行注释)
/* 输出一个hello world (多行注释)*/
System.out.println("Hello World!");
}
}
二、标识符和关键字
类名、变量名、方法名都被称为标识符
注意点:
- 所有标识符必须以字母、美元符$、下划线_ 开始,首字符后随意,但为了规范,建议用好English
- 不能使用关键字作为变量名或方法名
- 标识符大小写敏感
关键字:(不认识不要紧,慢慢积累)
三、数据类型
Java是强类型语言,要求变量的使用要符合规定,所有变量必须先定义,后使用。
因此,安全性高,但速率较低。鱼与熊掌不可兼得焉!
首先了解什么是字节?
- 位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B表示
- 1 byte = 8 bit
- 字符:计算机中使用的字母、数字、字和符号
一些转换关系:
- 1 B = 8 b
- 1024 B = 1 KB
- 1024 KB = 1 M
- 1024 M = 1 G
- 1024 G = 1 TB
八大基本数据类型:
public class Demo1 {
public static void main(String[] args) {
//八大基本数据类型
//整数
byte num1 = 10;
short num2 = 500;
int num3 = 6666; //常用
long num4 = 999999999L; //long类型一般在数字后面加L
//小数
float num5 = 9.6F; //float类型一般在数字后面加F
double num6 = 66.99;
//字符
char name = 'W';
//字符串(引用类型)
//String id = "我在吃大西瓜呢";
//布尔值
boolean flag1 = true;
boolean flag2 = false;
}
}
相关拓展:
public class Demo2 {
public static void main(String[] args) {
//整数拓展: 进制 二级制0b 十进制 八进制0 十六进制0x
int i = 10;
int i2 = 010;
int i3 = 0x10;
System.out.println(i); //10
System.out.println(i2); //8
System.out.println(i3); //16
System.out.println("===============================================");
//=================================================================
//浮点数拓展: 问--->有关银行业务怎么表示?
// 答--->BigDecimal数学工具类
//因为float是有舍入误差
//example1:
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d); //false
//example2:
float d1 = 12345678998765f;
float d2 = d1+1;
System.out.println(d1==d2); //true
System.out.println("===============================================");
//=================================================================
//字符拓展 强制转换
//所有的字符本质还是数字 参考Unicode编码表
char c1 = 'a';
char c2 = '我';
System.out.println(c1);
System.out.println((int)c1); //97
System.out.println(c2);
System.out.println((int)c2); //25105
char c3 = '\u0061';
System.out.println(c3); //a
//转义字符 (百度一下!)
// \t 制表符
// \n 换行
System.out.println("===============================================");
//=================================================================
//布尔值拓展
boolean flag = true;
//以下表示方法一样 less is more!
//if(flag==true){}
//if (flag){}
}
}
四、类型转换
Java是强类型语言,故有些运算时需要用到类型转换
public class Demo3 {
public static void main(String[] args) {
int i = 128;
//强制转换 (类型)变量名 高->低
byte b = (byte)i;
//自动转换 低->高
double d = i;
System.out.println(i); //128
System.out.println(b); //-128 内存溢出
System.out.println(d); //128.0
/*
注意:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.高--->低 强制转换
4.转换时可能存在溢出问题或者精度问题
*/
}
}
关于溢出问题:操作比较大的数时,要注意溢出问题
public class Demo4 {
public static void main(String[] args) {
int money = 10_0000_0000; //JDK7的新特性
int years= 30;
int sum1 = money*years; //-64771072溢出
long sum2 = money*years; //-64771072,默认是int,转换之前已存在问题
long sum3 = money*(long)years; //30000000000
}
}
五、变量、常量、作用域
1、变量
注意事项:
- 每个变量都有类型
- 变量名必须为合法的标识符
2、常量
常量(constant):初始化后不能再改变值!
常量名一般用大写字母
final double PI = 3.14;
3、变量作用域
public class Demo5 {
//类变量 static
static double salary = 2500;
//实例变量:从属于对象;若不自行初始化,则输出默认值
//默认值 :0 0.0 false null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 10;
System.out.println(i); //10
//变量类型 变量名
Demo5 demo5 = new Demo5();
System.out.println(demo5.age); //0
System.out.println(demo5.name); //null
//类变量 static
System.out.println(salary); //2500
demo5.method(); //100
}
//其他方法:
public void method(){
int i = 100; //局部变量
System.out.println(i);
}
}
一些命名规范:重要指数五颗星★★★★★
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则(monthSalary)
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线(MAX_VALUE)
- 类名:首字母大写和驼峰原则(Boy、GoodBoy)
- 方法名:首字母小写和驼峰原则(run()、toRun())
六、基本运算符
1、算术运算符
public class Demo6 {
public static void main(String[] args) {
//二元运算符
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b); //30
System.out.println(a-b); //-10
System.out.println(a*b); //200
System.out.println(a/(double)b); //0.5
System.out.println(a%b); //10
}
}
值得理解指数五颗星★★★★★
public class Demo8 {
public static void main(String[] args) {
//一元运算符
int a = 3;
int b = a++; //先给b赋值,再自增
//a++ a = a+1
System.out.println(a); //4
//++a a = a+1
int c = ++a; //先自增,再给c赋值
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
}
}
2、关系运算符
public class Demo8 {
public static void main(String[] args) {
//关系运算符返回结果: true or false
int a = 10;
int b = 20;
System.out.println(a>b); //false
System.out.println(a<b); //true
System.out.println(a==b); //false
System.out.println(a!=b); //true
}
}
3、逻辑运算符
public class Demo9 {
public static void main(String[] args) {
//逻辑运算符
//与 and 或 or 非(取反)
boolean a = false;
boolean b = true;
System.out.println("a && b :"+(a&&b)); //false
System.out.println("a || b :"+(a||b)); //true
System.out.println("!(a && b) :"+(!(a&&b))); //true
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4); //c<4必然错了,故短路
System.out.println(d);
System.out.println(c); //5,因为不实现自增
}
}
4、位运算符
public class Demo10 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
--------------
A&B:0000 1100 上下比较,两个都是1则为1,否则为0
A/B:0011 1101 上下比较,两个都为0则为0,否则为1
A^B:0011 0001 上下比较,相同为0,不同为1
~B :1111 0010 与B完全相反
问:2 * 8 = 16 怎样运算最快?
答:2 * 2 * 2 * 2
必记!!!
<< 左移 *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);
}
}
5、条件(三元)运算符
public class Demo11 {
public static void main(String[] args) {
//x ? y : z
//若x==true,则结果为y,否则为z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type); //及格
}
}
6、扩展运算符
public class Demo12 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a=a+b
a-=b; //a=a-b
System.out.println(a); //10
//------------------------------------------------------
System.out.println("----------------------------------");
//字符串连接符 +
System.out.println(""+a+b); //1020
System.out.println(a+b+""); //30
}
}
七、包机制
一般利用公司域名倒置作为包名
如:www.baidu.com
package com.baidu
Java中导入包机制:import (IDEA现在一般会自动导入)
八、JavaDoc生成文档
JavaDoc命令是用来生成自己API文档的
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
疯狂Java基础Day1的更多相关文章
- java基础-day1
第01天 java基础知识 今日内容介绍 u Java概述.helloworld案例 u 工具安装 .配置环境变量.注释.关键字 u 常量.变量.数据类型.标识符 第1章 Java概述 1.1 ...
- 疯狂Java基础Day2
巩固Java流程控制的学习... 一.用户交互Scanner 通过Scanner类获取用户的输入 import java.util.Scanner; public class Demo1 { publ ...
- udp协议基础(转自疯狂java讲义)
第17章 网络编程 17.4 基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...
- Java基础进阶整理
Java学习笔记整理 本文档是我个人整理的,首先是想通过完成本文档更加扎实自己的基础加强对java语言的理解,然后就是想给入了门的同志们做下贡献. 当然,本文档主要是对java语言基础(当然还有很多基 ...
- 《疯狂Java讲义》(一) ---- 关于学习Java的反思
"听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...
- 《疯狂java讲义》笔记 1-5章
1.编译语言和解释语言理解,摘自李刚老师的<疯狂Java讲义>第三版: 就是说,Java和.net都是编译型有事解释型语言.编译型就是根据不同平台编译成不同的可执行机器码,编译过程中会进行 ...
- 《疯狂java讲义》读后感
<疯狂java讲义·第三版>,全书共851页,18章. 目录如下: 第1章 Java语言概述与开发环境 第2章 理解面向对象 第3章 数据类型和运算符 第4章 流程控制与数组 第5章 面向 ...
- 如何学习java?Java基础知识点分享
面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...
- Java课堂笔记(一):Java基础
本篇博客将对Java中的数据类型.操作符,常量与变量和数组进行介绍.这些内容都是Java中最基本的知识,也是初学Java时最开始就需要了解的东西. Java数据类型 Java是一种强类型的语言,这就意 ...
随机推荐
- 硕盟type-c转接头|四合一多功能扩展坞
硕盟SM-T54是一款 TYPE C转HDMI+VGA+USB3.0+PD3.0四合一多功能扩展坞,支持四口同时使用,您可以将含有USB 3.1协议的电脑主机,通过此产品连接到具有HDMI或VGA的显 ...
- python库--tensorflow--io操作
方法 返回值类型 参数 说明 .train.Saver() 实例s var_list=None 指定被保存和恢复的变量 dict: {name: 变量} list: [变量] None: 所有save ...
- 【C++周报】第二期 2021-8-19
这次我们照样看一道题.个人认为比上一次的简单. https://vijos.org/p/1130 先说方法,动态规划,你能想到什么? "在它的左边加上一个自然数,但该自然数不能超过原数的一半 ...
- Elasticsearch(ES)的滚动搜索与批量操作
1. 概述 今天我们来聊一下Elasticsearch(ES)的滚动搜索与批量操作. 2. Elasticsearch(ES)的滚动搜索 2.1 概述 滚动搜索我们经常能够用到,例如:推荐列表,此类 ...
- mysql5.5根据条件进行排序查询 TP5
用到了 order by if 和 count 使用的是TP5.0 $sql = Db::name('teacher') ->alias('t') ->join('user u', 'u. ...
- 安装VM-TOOLS,解压tar包时提示目录磁盘空间不足
在虚拟机里安装了ubuntu-18.04.4-desktop-amd64,安装VM-TOOLS,解压tar包时提示目录磁盘空间不足. 解决方法一: 打开terminal,输入:sudo apt ins ...
- P5056-[模板]插头dp
正题 题目链接:https://www.luogu.com.cn/problem/P5056 题目大意 \(n*m\)的网格,求有多少条回路可以铺满整个棋盘. 解题思路 插头\(dp\)的,写法是按照 ...
- P4201-[NOI2008]设计路线【结论,树形dp】
正题 题目链接:https://www.luogu.com.cn/problem/P4201 题目大意 给出\(n\)个点的一棵树开始所有边都是白色,选出若干条没有公共点的路径将上面所有边变为黑色. ...
- YbtOJ#493-最大分数【斜率优化dp,分治】
正题 题目链接:http://www.ybtoj.com.cn/contest/117/problem/1 题目大意 \(n\)个数的一个序列,给其中的一些数打上标记. 一个标记方案的贡献为\(s_1 ...
- Windows10 IIS Web服务器安装配置
前言: 对于.NET开发者而已,IIS Web托管服务器应该是十分的熟悉的.对于刚安装Windows10的系统的用户而已Internet Information Services(IIS)功能是默认关 ...