[CSDN话题挑战赛第2期]:[Java技术分享]

CSDN话题挑战赛第2期
参赛话题:Java技术分享

Java技术er集合啦!大家可分享关于Java技术知识,包括但不限于微服务,分布式等前沿技术,快来沉淀自己的技术,一起写出未来吧!
你可以从以下几个方面着手(不强制),或者根据自己对话题主题的理解进行创作,参考如下:

提醒:在发布作品前请把不用的内容删掉

final代码实践

package com.thinkingjava.chapter8;

class People{
    private Double a;
    People(Double a){
        this.a = a;
    }
    public Double getA() {
        return a;
    }
}
public class Theeg1 {
    private final Double j = 0.000;
    private final People p;
    public Theeg1(Double x){
//        j = x;
        p = new People(x);
        System.out.println(p.getA());
        System.out.println("this is " + x + " million US dollars for the car");
    }
    public static void main(String[] args) {
        Theeg1 d = new Theeg1(23.00);
        System.out.println(d.toString());
    }
    @Override
    public String toString() {
        Theeg1 f = new Theeg1(24.00);
        return null;
    }
}


结果:

23.0
this is 23.0 million US dollars for the car
24.0
this is 24.0 million US dollars for the car
null

Java写程序提高代码质量教程

写程序提高代码质量

1、提高运行效率
这是最重要的目的
利用if else减少要进行对同一张多表做相同工作的事
如一个插入功能
不要写成先插入后查询,能一步解决一步OK

另一方面运行效率也体现在sql方面,往往优化sql语句可以很大程度提高运行效率

    @Override
    public Boolean updateBrandHotConfig(AdminJoinBrandHotConfigUpdateReq updateReq) {
        String brandCode = updateReq.getBrandCode();
        //检查brandCode在join_brand_hot_config中是否存在
        JoinBrandHotConfigResp byBrandCode = joinBrandHotConfigMapper.getByBrandCode(brandCode);
        //如果不存在,则插入
        if (null == byBrandCode) {
            JoinBrandHotConfig hotConfig = getJoinBrandHotConfig(updateReq);
            hotConfig.setType(BrandHotConstant.BRAND_HOT_CONFIG_TYPE_REMEN);
            hotConfig.setGmtCreate(DateUtils.getNow());
            hotConfig.setStatus(BrandHotConstant.JOIN_BRAND_HOT_CONFIG_STATUS_DEF);
            hotConfig.setSort(BrandHotConstant.JOIN_BRAND_HOT_CONFIG_SORT_DEF);
            hotConfig.setIndex(BrandHotConstant.JOIN_BRAND_HOT_CONFIG_INDEX_DEF);
            joinBrandHotConfigMapper.addBrandHotConfig(hotConfig);
        } else {
            //如果存在,则更新
            JoinBrandHotConfig hotConfig = getJoinBrandHotConfig(updateReq);
            joinBrandHotConfigMapper.updateBrandHotConfig(hotConfig);
        }
        return true;
    }

    private JoinBrandHotConfig getJoinBrandHotConfig(AdminJoinBrandHotConfigUpdateReq updateReq) {
        JoinBrandHotConfig hotConfig = new JoinBrandHotConfig();
        hotConfig.setBrandCode(updateReq.getBrandCode());
        hotConfig.setShowStartTime(updateReq.getShowStartTime());
        hotConfig.setShowEndTime(updateReq.getShowEndTime());
        hotConfig.setBrandLogo(updateReq.getBrandLogo());
        hotConfig.setGmtModified(DateUtils.getNow());
        return hotConfig;
    }

2、提高代码可读性
前提是公共接口不要影响代码运行
那么可以抽出相同的方法进行封装,一般这样的方法只维护相同属性,而不会去做很大变化。
命名规范。
整洁性,不要把两件事的步骤重合在一起,东一下,西一下
最后,向规范致敬,学习规范,如果没有合适的规范代码,可以参考阿里巴巴规范代码,这样可以提高代码可读性,不关是要别人看得懂你的代码,一段时间后,你要迅速看懂你以前写的代码
常量好用

BrandHotConstant.JOIN_BRAND_HOT_CONFIG_SORT_DEF

public interface BrandHotConstant {

    int JOIN_BRAND_HOT_CONFIG_SORT_DEF = 0;
    
}

传多个参数的时候,可以用对象进行封装

            JoinBrandHotConfig hotConfig = getJoinBrandHotConfig(updateReq);
            hotConfig.setType(BrandHotConstant.BRAND_HOT_CONFIG_TYPE_REMEN);
            hotConfig.setGmtCreate(DateUtils.getNow());
            hotConfig.setStatus(BrandHotConstant.JOIN_BRAND_HOT_CONFIG_STATUS_DEF);
            hotConfig.setSort(BrandHotConstant.JOIN_BRAND_HOT_CONFIG_SORT_DEF);
            hotConfig.setIndex(BrandHotConstant.JOIN_BRAND_HOT_CONFIG_INDEX_DEF);
            joinBrandHotConfigMapper.addBrandHotConfig(hotConfig);

代码规范

    @Override
    public Boolean setSort(String brandCode, Integer sort) {
        Date gmtModified = DateUtils.getNow();
        log.info("修改排序 brandCode:{}, sort:{}, gmtModified:{}", brandCode, sort, gmtModified);
        JoinBrandHotConfigResp byBrandCode = joinBrandHotConfigMapper.getByBrandCode(brandCode);
        //如果不存在,则插入
        if (null == byBrandCode) {
            JoinBrandHotConfig hotConfig = getJoinBrandHotConfig(brandCode);
            hotConfig.setIndex(BrandHotConstant.JOIN_BRAND_HOT_CONFIG_INDEX_DEF);
            hotConfig.setStatus(BrandHotConstant.JOIN_BRAND_HOT_CONFIG_STATUS_DEF);
            hotConfig.setSort(sort);
            joinBrandHotConfigMapper.addBrandHotConfig(hotConfig);
        } else {
            //如果存在,则更新
            //排序
            joinBrandHotConfigMapper.setSort(brandCode, sort, gmtModified);
        }
        return true;
    }

3、代码严谨,思路逻辑有序并且清晰
需要进行各种空判断,考虑多种情况
if 。。。。else
考虑可能发生的错误
少写全局变量,不能简单为了方便使用全局变量,多个方法调用,可能导致影响值结果的后果
请求参数和实体类分开来写,看似啰嗦,实则严谨,可维护性高

    private JoinBrandHotConfig getJoinBrandHotConfig(AdminJoinBrandHotConfigUpdateReq updateReq) {}

4、坚持,你一定可以提高代码质量
每天进步

IO流


IO流

1、File能对文件和目录进行增删改查,但不能访问文件内容本身

所以要用到输入/输出流的这个概念。、

File部分常用的方法

public String getAbsolutePath() 获取绝对路径

public String getParent () 获取上层文件目录路径

public boolean renameTo(File dest) 把文件重命名给指定的路径

public boolean isDirectory() 判断是否为文件目录

public boolean isFile() 判断是否是文件

public boolean exists() 判断是否存在

public boolean createNewFile 创建文件

public boolean mkdirs() 创建文件目录

public boolean delete() 删除文件或者文件夹/2、

2、java IO原理

I/O-----》Input/Output

—》处理设备之间的数据传输

输入Input 读取外部数据(磁盘等)到内存中

输出Output 将程序(内存)数据输出到磁盘等存储设备

3、流的分类

数据单位=========字节流,字符流

流向=============输入流,输出流

角色========节点流,处理流

节点流:之间从数据源或者目的地读写数据

处理流:不直接连接到输急眼或者目的地,而是“连接”在已存 在的流(节点流或处理流)之上,通过对数据的处理为程序提 供更为强大的读写功能。

4、抽象基类 节点流(文件流) 缓冲流

字节流

InputStream FileInputStream BufferedInputStream

OutputStream FileOutputStream BufferedOutputStream

字符流

Reader FileReader BufferedReader

Writer FileWriter BuffereWriter

5、对象的序列化

允许吧内存的Java对象转换成平台无关的二进制,从而允许把这种二进制保存在磁盘上。

堆、栈、方法区(3.0)

​​​​​在这里插入图片描述

0、上面比较形象可以看出堆、栈、方法区之间的区别,栈存的是局部变量、堆一般是对象等等,而方法区存在的事一些信息加载出来等等,他们互相分工。

1、String a=new String(“fdsdfs”);

堆 存放的是new出来的对象 jvm中只有一个堆区 被所有的线程共享

栈 是变量a 每个栈中的数据私有的 其他栈不能访问。栈中分配的是基本类型和自定义对象的引用。

方法区 是“fdsdfs”;被所有的线程共享,方法区包含所有的class static变量。方法区存放的是类信息和static变量。

2、也可以这么理解:堆是用来存放对象的,栈是用来运行程序的。堆:java的垃圾回收器会自动的回收这些不用的数据。缺点是由于要动态的分配内存,存储效率会比较的慢。

栈:栈的优势是存取效率比较快,仅次于寄存器,栈数据可以共享。但缺点是栈中的数据大小和生存期的固定的,缺乏灵活性。

3、堆和栈的区别可以用如下的比喻来看出:(来自csdn/weixin_41254254)
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就
走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自
由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

final代码实践2

package com.thinkingjava.chapter8;

class Post{
    public final void writecode(){
        System.out.println("I am writing code");
    }
}
final class FinalClass{
    int c1 = 1;
    void f3(){
        System.out.println("hi,this if FinalClass-f3 " + c1);
    }
}
public class Finalall {
    void IParameter(final Post a){
//        a = new Post();
        a.writecode();
    }
    public static void main(String[] args) {
        Post b = new Post();
        b.writecode();

        FinalClass b2 = new FinalClass();
        b2.f3();
        b2.c1 = 10;
        b2.f3();
    }
}


结果

I am writing code
hi,this if FinalClass-f3 1
hi,this if FinalClass-f3 10

throw和throws的区别

class Student{
	private int id;
	public void dognji(int id) throws java.lang.Exception{
		if(id > 0){
			this.id = id;
		}else{
			throw new java.lang.Exception("你的输入非法");
		}
	}
}


throws与throw都是异常处理这块内容的,再来回顾一下异常处理的好处,异常处理是对可能发生的异常进行预测处理,以防止程序因为异常的原因无法进行下面的功能或者说卡在异常处理这块

try…catch是捕捉异常,而throws与throw是抛出异常,throw是语句抛出一个异常。
在这里插入图片描述

throws是方法可能抛出异常的声明。

在这里插入图片描述

JavaScript中对象的方法被访问


<body>

<p id="demo"></p>

<p id="demo2"></p>

<script>

    var username = {

        id : 1,

        name : "xiaoming",

        age : 18,

        mymethod : function(){

        return this.id + " " + this.name + " " + this.age;

        },

        zhognhua : function () {

            return this.id;

        }

    };

    document.getElementById("demo").innerHTML = username.mymethod();

    document.getElementById("demo2").innerHTML = username.zhognhua();

</script>



</body>





结果

1 xiaoming 18

1


结果 1 xiaoming 18

1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习微站公众平台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值