我们的java基础到底有多差 一个视频引发的感想

时间:2022-08-30 15:36:24

以此文来警示自己。

大三要结束了。

我从大一下学期开始接触java,两年半了,期间有很努力的自学,也参与了一下项目,满以为自己的java基础应该不错,但今天在网上看了一个视频才发现自己学的是多么的“浅”,知道了自己的java基础还很差。写程序不是可以实现功能就可以了,还要考虑效率。或许定义一个变量只会多占用几个比特位,一个for循环只会多消耗几毫秒,但当一段段代码组成一个个庞大的系统时,弊端就显露出来了,就像视频里说的,我们写出来的项目只会是一个个12306。

或许是科班出身的我们被教的东西不够吧,有些东西还是得自己努力去探索的,即使是基础知识,也不容小觑,因为基础也不是像你想的你们的简单。

下面奉上看视频做的笔记,经验丰富的高手们肯定都知道,望勿喷。

package test;

import java.math.BigDecimal;

public class TestData {

	/**
* 数据类型 :基本数据类型 引用数据类型(自定义)
* 基本数据类型:byte short int long float double char boolean
* 字节 1 2 4 8 4 8 2
*
* float :32位(1+8+23) 符号位+幂指位+数值位
* double:64位(1+11+52)
*/ public static void main(String[] args) {
//给char型赋值有四种方法
char c1 = 'a'; //直接赋值
char c2 = 97; //ASCII码赋值
char c3 = '\u4e2d'; //unicode编码赋值 后面是16进制
char c4 = '\t'; //转义字符
System.out.println(c1+"&"+c2+"&"+c3+"&"+c4+"&"); //a&a&中& & //int型赋值
int n1 = 30; //直接赋值
int n2 = 0b11110; //二进制赋值 0b+ ||30=16+8+4+2 ||除2取余 15_0 7_1 3_1 1_1 0_1 -> 11110
int n3 = 0x1e; //16进制赋值 0x+ ||转二进制 00011110 转16进制 1E
int n4 = 036; //8进制赋值 0+ ||除8取余 3_6 0_3 36
System.out.println(n1+"|"+n2+"|"+n3+"|"+n4+"|"); //30|30|30|30|
//char+int+String 先做加法 再拼接
System.out.println('1'+1+"1"); //501 char型的1表示ASCII码为49 49+1+"1" = 501
//String+int+char 拼接再拼接
System.out.println("1"+1+'1'); //111
//char+char 做加法
System.out.println('1'+'1'); //98 49+49=98
//2.0-1.1
System.out.println(2.0-1.1); //0.8999999999999999
System.out.println(2.0f-1.1f); //0.1
/**
* double: 2.0转为2进制 10.0000000000000000(16位处截断)
* 1.1转为2进制 01.0001100110011001 (1二进制为1, 小数:0.1*2=0.2_0 0.2*2=0.4_0 0.4*2=0.8_0 0.8*2=1.6_1 0.6*2=1.2_1 0.2*2=0.4_0)
* 相减得0.1110011001100111 转为10进制-0.8999999999999999
* float 先按double计算,然后四舍五入为0.9f
* 解决方法:使用BigDecimal
*/ BigDecimal b1=new BigDecimal("2.0");
BigDecimal b2 = b1.subtract(new BigDecimal("1.1"));
System.out.println(b2); //0.9 } }
package test;
//运算符
public class TestOperator { public static void main(String[] args) {
//取模运算符 符号位取决于第一个数
System.out.println(5%3); //2
System.out.println(-5%3); //-2
System.out.println(5%-3); //2
System.out.println(-5%-3); //-2
System.out.println(2%2); //0
System.out.println(-2%2); //0 //非短路运算符[& | ]和短路运算符[&& ||]
int num = 5;
if(++num < 4 && num++ > 1)
System.out.println("qwer");
System.out.println(num);
//结果是:6
//短路运算符前面判断为false 后面的就不再执行了(对与运算来说,对或运算相反)
num = 5;
if(++num < 4 & num++ > 1)
System.out.println("qwer");
System.out.println(num);
//结果是7
//非短路运算符全执行 //按位运算符
//当一个正数%2的n次方时,等价于&(该2的n次方-1)
System.out.println((100&1)==100%2); //true
System.out.println((100&3)==100%4); //true
System.out.println((100&7)==100%8); //true
System.out.println((100&15)==100%16); //true
System.out.println((100&31)==100%32); //true //权限的实现 1:权限1 2:权限2 4:权限3 8:权限4
//以他们的和表示权限 如3=1+2 7=1+2+4 9=1+8
//用自己的权限&某一权限的代表数字 可得知自己有无该权限
System.out.println((9&1)==1); //true 表示有权限1
System.out.println((9&2)==2); //false
System.out.println((9&4)==4); //false
System.out.println((9&8)==8); //true // 在不借助第三块空间的条件下 交换两个数
//使用按位异或运算符
int a = 1;
int b = 2;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println(a+" "+b); //2 1
//加减法
a = 1;
b = 2;
a = a + b;
b = a - b;
a = a - b;
System.out.println(a+" "+b); //2 1 //不局限的利用for循环
//打印a-z
for(int i = 97;i<123;i++){
System.out.print((char)i);
}
//这样真的好吗? 看看下面的:
System.out.println();
for(char c='a';c<='z';c++){
System.out.print(c);
}
//第二种只利用char的16个位 第一种还需要利用int的32个位 } }

版权声明:本文为博主原创文章,未经博主允许不得转载。

我们的java基础到底有多差 一个视频引发的感想的更多相关文章

  1. 【Java基础】用LinkedList实现一个简单栈的功能

    栈的基本功能 栈的最基本功能是保障后进先出,然后在此基础上可以对在栈中的对象进行弹入弹出,此外,在弹出时,如果栈为空,则会报错,所以还需要提供获取当前栈大小的方法. 构造存储对象Student /** ...

  2. 【死磕 Java 基础】 — 自己动手实现一个 LRU

    大家好,我是大明哥,一个专注于[死磕 Java]系列创作的男人 个人网站:https://www.cmsblogs.com/.专注于 Java 优质系列文章分享,提供一站式 Java 学习资料 LRU ...

  3. java基础—继承题目:编写一个Animal类,具有属性:种类;具有功能:吃、睡。定义其子类Fish

    编写一个Animal类,具有属性:种类:具有功能:吃.睡.定义其子类Fish package zhongqiuzuoye; public class Animal { //属性 private Str ...

  4. 【java基础】随手写的一个日期计算,新手可以看看

    随手写的一个例子, 只是练习下自己的代码布局以及思路.. 1. 先写下简单的测试 2. 根据常用的不用修改的变量抽取出来, 作为常量(常量的命名可能有点不规范,谅解~) 3. 方法的作用不一样, 抽取 ...

  5. java基础常见面试题,这是一篇超长的随笔!!!

    1. Java基础部分....................................................... 4 1.一个".java"源文件中是否可以包括 ...

  6. Java基础部分 2

    一. Java基础部分 2 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 2 2.Java有没有goto? 2 3.说说&和&&am ...

  7. 【Spring学习】【Java基础回顾-数据类型】

    Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...

  8. Java基础(一):简介

    一.java基础语法: 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...

  9. 01 Java基础

    Java基础 01 Hello 随便新建一个文件夹,存放代码 新建一个Java文件 文件后缀名为.java Hello.java [注意点]系统可能没有显示文件后缀名,我们需要手动打开 编写代码  p ...

随机推荐

  1. Chrome插件整理

    本文内容都来源于偶整理的fetool. 想让更多使用Chrome的小伙伴,体验到这些令人愉悦的小工具,所以单独整理了这篇文章. 如果你是 前端/服务端/设计/面向Github编程/视觉控,相信下列的插 ...

  2. CSS3 动画

      通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片.Flash 动画以及 JavaScript. CSS3 动画 CSS3 @keyframes 规则 如需在 CSS3 中创建动画, ...

  3. Python学习之静态页面数据抓取

    1 页面信息抓取 定义getPage函数,根据传入的页码get到整个页面的html内容 getContent函数,通过正则匹配把页面中的表格部分的html内容取出 最后定义getData函数,同样是通 ...

  4. 内容高度小于窗口高度时版权div固定在底部

    <!doctype html><html><head><meta charset="utf-8"><title>文档内容 ...

  5. Enze frist day

    今天是我来到云和学院正式开班上课的第一天,我选择学习的科目是.net.因为.net我在学校的时候接触过一些,所以我想要更加深入的去学习.我觉得一个学生在学习上最怕的是没有遇到一位负责任的好老师,但幸运 ...

  6. windows git支持arc命令

    本文整理了在Windows系统上安装代码审查工具Arcanist的过程.目的是配合Phabricator进行代码review.配置成功后可使用arc diff命令来发起code review. 1.安 ...

  7. tomcat启动报错 关键字:java&period;lang&period;NoClassDefFoundError和 java&period;lang&period;ClassNotFoundExceeption

    启动tomcat时报错情况如下图所示:实际上就是依赖的bean出错,百度上很多方法都说是tomcat没有部署正确,项目-->右键----->proterties----->Targe ...

  8. poj 3254(状态压缩DP)

    poj  3254(状态压缩DP) 题意:一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相 ...

  9. sql 时间段内没有的数据等于0

    如何实现没有的时间段中使用0来填充?? if object_id('[A]') is not null drop table [A] go create table [A]([日期] datetime ...

  10. 大数据技术大合集:Hadoop家族、Cloudera系列、spark、storm【转】

    大数据我们都知道hadoop,可是还会各种各样的技术进入我们的视野:Spark,Storm,impala,让我们都反映不过来.为了能够更好 的架构大数据项目,这里整理一下,供技术人员,项目经理,架构师 ...