配置

数据库配置文件

我以yml为例,以后直接复制,不要在自己写了

spring:

datasource:

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC

username: root

password: 123456

基础知识

Switch

分支需要注意的问题,例如switch case 这个条件分支,switch的变量和case后的常量必须是同一个类型的

例如

int a =9;

switch (a)

{

case a<10: //这是错的

System.out.println("abc");

break;

case 8:

System.out.println("123");

break;

}

a是int变量,第一个case后面是a<10是一个Bool值的类型,这就是错的,第二个case后的8才是对的。

对于switch这个分支条件,我居然还是不熟悉。例如以下的例子:

package com.company;

public class Main {

public static void main(String[] args) {

int age=8;

switch (age) {

case 0:

System.out.println("0");

case 1:

System.out.println("1");

default:

System.out.println("默认");

}

}

}

像这种,输出的结果是默认,这是毫无疑问的,但是接下来的这个例子,我就疏忽了:

package com.company;

public class Main {

public static void main(String[] args) {

int age=8;

switch (age) {

default:

System.out.println("默认");

case 0:

System.out.println("0");

case 1:

System.out.println("1");

}

}

}

这个例子的输出结果是 默认 0 1 ,我是出乎意料的,说明基本功不扎实。 这个例子把Default放到了第一位,所以会先执行default语句,而switch在执行过一次之后,假如没有break语句,那么switch会把接下来的所有分支都执行一边,所以break的意义还是非常大的。

i++和++i

这个其实很早就学过了,但是今天看了一道面试题,居然还是不会

i++是先赋值,再加1,而++i是先加1,再赋值。

注意:i=i++和i++不是一回事

现在来开始讲解了,我举个栗子

public void test(){

int i=1;

i=i++;

System.out.println(i++);

}

这个方法的执行结果是1,原因就是i++是先赋值,再加1。i=i++可以看下图,i=i++先执行的是i++,i会放到操作数栈,为1,然后++是在局部变量表加的,i这个时候为2,然后i++算完了,结果是i=2,操作数栈是1,这个时候i=i++,要把值赋值给i,这个时候,操作数栈的1会赋值给i,可以看见i从2又变成1了。

下面的输出语句也是,由于i++的先赋值再加1的特点,会先输出,再加1

我们再来看一个例子

public void test(){

int i=1;

i++;

System.out.println(i++);

}

这个代码输出的是2,这个例子很形象的讲述了i++先赋值在加1的特点,第二行单独的i++的时候,由于没有赋值对象,所以i++就变成了i=i+1;这个时候i是2了,然后下面输出语句的i++,会先打印,再加1,所以结果还是2

好了,再贴一个for循环的例子

public void test(){

for (int i = 0; i < 10;i++) {

System.out.println(i);

}

}

这个例子都很熟悉了,输出结果就是0到9,现在我改一下

public void test(){

for (int i = 0; i < 10;i=i++) {

System.out.println(i);

}

}

我让i++那里有一个赋值了,完了i++先赋值后加1的特点出来了,结果就是无限循环输出0

最后,我把我看的那道面试题放出来吧

public void test(){

int i=1; //i=1

i=i++; //i=1,因为先赋值

int j=i++; //j=1,i为2,详情见下图图解

int k=i+ ++i * i++; //2+ 3 * 3 ++i之后,i变成3了

System.out.println("i=" + i); //i++,3变4

System.out.println("j=" + j);

System.out.println("k=" + k);

}

答案是4 1 11,具体讲解看注释

int j=i++;图解如下:

快捷打代码

由于我使用的IDE是idea,我不知道怎么去快捷的打出代码,Visual Studio可以双击Tab键补全代码,idea的方法是,打的时候找那种带有Create Loop字样的,例如我打一个for循环:

不要选择上面那个for,否则括号什么的还得自己去打。

输入数据

不知道Java里面是怎么输入的,总结一下:

int a=cin.nextInt();//输入一个整数

System.out.println(a);

double b=cin.nextDouble();//输入一个双精度的浮点数

System.out.println(b);

String str=cin.next();//输入一个单词

System.out.println(str);

String str2=cin.nextLine();//输入一行,中间可有多个空格

System.out.println(str2);

这个是输入,但是我不是很懂下面两个输入字符的语句,两个不能同时输入?而且我还分不清两个的区别。

输出的话,就是有一点,加ln的会换行,不加ln就不会换行了。

代码折叠

Visual Studio里面有一个很好用的功能,就是折叠代码,用的是#region #endregion ,非常好用,idea呢也有这个功能,不过使用的是//region //endregion 把#换成了//

super关键字

Java中的super关键字,主要是调用父类的一些属性和方法,例如:

Vae vae=new Vae();

vae.Eat();

vae.GetName();

这里我的Vae类是继承了Person类的,如下:

super类就是子类中可以调用父类的东西。

instanceof 防止类型强制转换带来的错误

Java中的强制类型转换,有时候类型转换会出现溢出的错误,我们可以使用 instanceof 来防止:

int a=10;

Object object=a;

int b=(int)object;

System.out.println(b);

if (object instanceof Double) {

Double c=(double)object;

System.out.println(c);

}else {

System.out.println("这个object对象不能转化为Double类型的");

}

这样就不会出现强制类型转换的溢出错误了。

继承

Java中继承类的关键字是 extends 继承接口的关键字是 implements

第一个Java程序

这里我会使用命令框的方式写一个Java程序

先新建一个文本文件,改名为Vae.java,然后写以下代码:

class Hello{

public static void main(String args[]){

System.out.println("许嵩是最佳歌手");

}

}

然后保存,使用命令框进行编译:javac Vae.java

注意,有时候编码的话会报错: 编码GBK的不可映射字符

原因参考:这篇文章

这时会出现Hello.class

再输入java Hello就可以输出语句了。如图:

Java的一个反编译软件,叫XJad,还不错

直接打开编译过的class字节码,是乱码,直接用XJad打开就可以看了

有一点有意思的是,注释是不会显示出来的,注释在代码编译的过程中,就没有了。

Java多态,有一些需要讲一下

1.成员变量

成员变量的多态,是先父类再子类。

2.成员函数

成员函数的多态,是子类覆盖父类,因为函数有一种特性,就是函数会覆盖,所以父子类都有的方法,子类会覆盖父类

3.静态函数

静态函数和普通的成员函数是不一样的,都划在了静态内存区,调用的时候还是哪个类的对象调用的就显示哪个方法

package com.company;

public class Main {

public static void main(String[] args) {

System.out.println("大家好,我是Vae");

Fu f=new Zi();

System.out.println(f.num);

f.start();

Fu.Vae();

Zi z=new Zi();

System.out.println(z.num);

z.start();

Zi.Vae();

}

}

class Fu{

int num=3;

void start(){

System.out.println("我是父类");

}

static void Vae(){

System.out.println("我是静态父类");

}

}

class Zi extends Fu{

int num=5;

void start(){

System.out.println("我是子类");

}

static void Vae(){

System.out.println("我是静态子类");

}

}

这个是代码,执行一下,结果如下:

也就是,普通方法的多态是会覆盖的。变量和静态方法,都还是调用的父类里面的。

快捷敲代码

1.快捷方式,打东西,后面.sout就可以快速输出

其他的也是,比如.for .fori什么的

添加测试类

2.添加测试类,如果我想给一个接口,类啥的添加一个测试单元,我可以这样,在类上按下alt+enter键,出来这样,选择创建测试

自己选择测试的方法和路径,用的Junit,这个我讲过

接口上写注释

3.接口上写注释,一般都在接口上写方法的注释,这样我们继承接口的方法实现,鼠标放上去会显示注释的内容

注释这样写

在方法上面打出 /** 然后直接敲回车就可以了,写上汉字。来看看方法的实现的注释的展现

真的是很棒了,这个有开关,开关的地方在

错误集合

java.lang.ClassNotFoundException:

快气死我了,就是报这个错误,后来搜到一篇文章。点我 他说,要把你的jar包导入到lib文件夹下面才行,我尝试了可以了,Java Web可以链接数据库了,但是有几个问题还不懂,解决不了

我现在是写死的数据库连接,我想读取配置文件都不行,报错,不懂。。。。。

java小_Java小知识点总结相关推荐

  1. java修车_JAVA小练习34——使用java描述一个车类与一个修车厂类

    练习:使用java描述一个车类与一个修车厂类, 车具备的公共属性: 名字. 颜色. 轮子数. 车具备的公共 行为是跑的功能,但是跑之前必须要先检查轮子 是否够4个,如果不够4个轮子送去修车厂修理.修理 ...

  2. java ==陷阱_Java小陷阱

    基本数据类型与字符串的连接 在Java中,+不仅可作为加法运算符使用,还可作为字符串连接运算符使用. 当把任何基本数据类型的值与字符串值进行连接运算时,基本类型的值将自动类型转换为字符串类型. pub ...

  3. 圆周率java程序_Java小程序计算圆周率代码

    下面我们来介绍两种Java编程中实现计算圆周率的方法. 方法一:割圆法 计算公式为: π≈3*2^n*y_n 其中,n代表割圆次数,y_n代表圆中内嵌正6*n边形的边长 package 计算π的近似值 ...

  4. java 衣服_JAVA小程序-----买衣服

    import java.util.Scanner; //引用扫描器 public class TestDemo1 { public static void main(String [] args){ ...

  5. Java降落伞_Java 小例子:轮询淘汰 | 学步园

    一架飞机快要掉了,上面有 20 个人,但是只有 3 包降落伞.于是 20 个人凑成一圈,每数到第 7 个,就将他踢下去.--最后三包降落伞将落在哪几个人手里? 下面是示例代码.编写过程的录像在这里下载 ...

  6. 百度 java基础_java基础知识点整理

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 java基础知识点整理1.&和&&的区别? &:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true. ...

  7. java考题_Java考题知识点

    挑战10个最难回答的Java面试题(附答案) - 里奥ii的文章 - 知乎 https://zhuanlan.zhihu.com/p/79186037 1.java的基本编程单元是类,基本存储单元是变 ...

  8. java小知识_java小知识点简单回顾

    1.java的数据类型分为两种:简单类型和引用类型(数组.类以及接口).注意,java没有指针的说法,只有引用.简单类型的变量被声明时,存储空间也同时被分配:而引用类型声明变量(对象)时,仅仅为其分配 ...

  9. java项目逻辑重要吗_JAVA小项目,逻辑+感觉+总结?java小白你做到了吗(源码+教程)...

    俗话说的好,一如JAVA深似海.听起来好像胡说八道,其实却是很实在. 学过java的人都知道,java分支多,知识点十分丰富,单单论基础知识,也够学一壶的了,很多人在学习基础的时候已经被基础知识烦倒, ...

最新文章

  1. 为什么 CPU 访问硬盘很慢
  2. Snmp在Windows下的实现----WinSNMP编程原理
  3. 一级二级标题_考二级造价师有啥要求?
  4. 把文本以图片的形式保存
  5. git编译安装与常见问题解决
  6. java ajax 更改头像_ajax+node实现头像更改
  7. [Perforce]password (P4PASSWD) invalid or unset. 的错误解决
  8. 新时代ITer们的思考及购书有奖活动
  9. 《Windows via C/C++》学习笔记 —— 内核对象的“线程同步”之“事件内核对象”...
  10. 获取输入数组的最小值(含界面)例子详细分析
  11. Go语言实战爬虫项目
  12. 大一计算机php认证考试,2017年计算机基础大一考试试题【附答案】.doc
  13. 地图测量面积工具app_面积测量精灵手机版下载
  14. w7计算机应用放大按键,Win7窗口最大化和最小化快捷键是什么
  15. 使用QT5+Opencv完成简单的图像处理及视频处理软件
  16. zabbix3.2.7升级到zabbix3.4.1
  17. 推荐书籍 《半小时漫画经济学1--生活常识篇》
  18. 使用google-jib部署springboot应用到阿里云Serverless kubernetes
  19. Confluence: A Robust Non-IoU Alternative to Non-Maxima Suppression in Object Detection 论文阅读翻译
  20. 服务器虚拟化 魔力象限,Magic Quadrant for x86 Server Virtualization (魔力象限x86服务器虚拟化).pdf...

热门文章

  1. 无心剑中译叶芝《情愁》
  2. 【hdu2481】Toy,burnside引理+矩阵乘法
  3. 最长上升子序列nlogn算法
  4. 6.边缘检测:梯度——边缘检测、导数与边缘、什么是梯度_2
  5. 2017.9.21 道路修建(noi2011) 思考记录
  6. manacher 背诵用模板
  7. 汇编怎么从内存地址写入连续的数字_汇编语言 第一章 基础知识
  8. 复数正弦波 matlab,为什么正弦,反正弦函数计算结果会出现复数?
  9. java兔子问题流程图_C语言编程狼追兔子问题代码解析
  10. java tutorial mobi_Java 初学者List集合教程